Skip to content
Snippets Groups Projects
Commit 818a3cc3 authored by Daniel Puchala's avatar Daniel Puchala
Browse files

Merge branch 'generic-entity-dao' into 'milestone-1'

Superclasses for entity and DAO

See merge request !1
parents 06ee9521 56e1b867
No related branches found
No related tags found
2 merge requests!44Merge 'devel' branch,!1Superclasses for entity and DAO
package dao;
import entity.GenericEntity;
import java.util.List;
/**
* @author Daniel Puchala
*/
public interface EntityDao<Entity extends GenericEntity> {
void create(Entity entity);
void delete(Entity entity);
List<Entity> findAll();
Entity findById(Long id);
}
package dao;
import entity.GenericEntity;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import java.util.List;
/**
* @author Daniel Puchala
*/
public abstract class EntityDaoImpl<Entity extends GenericEntity> implements EntityDao<Entity> {
@PersistenceContext
protected EntityManager em;
protected final Class<Entity> entityClass;
public EntityDaoImpl(Class<Entity> entityClass) {
this.entityClass = entityClass;
}
public void create(Entity entity) {
em.persist(entity);
}
public void delete(Entity entity) {
em.remove(entity);
}
public List<Entity> findAll() {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Entity> query = cb.createQuery(entityClass);
Root<Entity> entity = query.from(entityClass);
query.select(entity);
return em.createQuery(query).getResultList();
}
public Entity findById(Long id) {
return em.find(entityClass, id);
}
}
package dao;
public interface ExampleDao {
}
package entity;
public interface ExampleEntity {
}
package entity;
import jakarta.validation.constraints.NotNull;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import java.time.LocalTime;
/**
* @author Daniel Puchala
*/
public class GenericEntity {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
@NotNull
@Temporal(TemporalType.DATE)
private LocalTime createdAt;
@NotNull
@Temporal(TemporalType.DATE)
private LocalTime updatedAt;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment