Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gnobroga/jpa-criteria
Aprendendo mais sobre a JPA Criteria API, estou utilizando o ORM Hibernate, com alguns relacionamentos, classes embeddables e heranças com discriminadores
https://github.com/gnobroga/jpa-criteria
Last synced: 14 days ago
JSON representation
Aprendendo mais sobre a JPA Criteria API, estou utilizando o ORM Hibernate, com alguns relacionamentos, classes embeddables e heranças com discriminadores
- Host: GitHub
- URL: https://github.com/gnobroga/jpa-criteria
- Owner: GNobroga
- Created: 2024-03-06T23:42:18.000Z (10 months ago)
- Default Branch: master
- Last Pushed: 2024-03-07T16:41:04.000Z (10 months ago)
- Last Synced: 2024-04-09T15:11:53.132Z (9 months ago)
- Language: Java
- Size: 15 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# JPA Criteria API
Para realizar alguns testes, criei este DAO genérico com métodos fluentes para iniciar uma transação, adicionar registros, buscar por ID e realizar consultas JPQL parametrizadas.
```java
public class GenericDAO {private Class clazz;
private final EntityManager em;
public GenericDAO(Class clazz, EntityManager em) {
this.clazz = clazz;
this.em = em;
}public GenericDAO startTransaction() {
em.getTransaction().begin();
return this;
}public GenericDAO commit() {
em.getTransaction().commit();
return this;
}public GenericDAO rollback() {
em.getTransaction().rollback();
return this;
}public GenericDAO save(E object) {
em.persist(object);
return this;
}public Optional findById(Object id) {
if (Objects.isNull(id)) return Optional.empty();
return Optional.ofNullable(em.find(clazz, id));
}public List findAll() {
String jpql = "from %s e".formatted(this.clazz.getName());
TypedQuery query = em.createQuery(jpql, clazz);
List result = query.getResultList();
return Objects.isNull(result) ? new ArrayList<>() : result;
}public List findByParameters(String jpql, Map parameters) {
try {
var query = em.createQuery(jpql, clazz);
for (Map.Entry param: parameters.entrySet()) {
query.setParameter(param.getKey(), param.getValue());
}
return query.getResultList();
} catch (IllegalArgumentException e) {
e.printStackTrace();
return Collections.emptyList();
}
}}
```
## Tecnologias
* Hibernate
* Java
* Postgres