package com.commafeed.backend.dao; import java.util.Collection; import org.hibernate.SessionFactory; import com.commafeed.backend.model.AbstractModel; import com.querydsl.jpa.hibernate.HibernateQueryFactory; import io.dropwizard.hibernate.AbstractDAO; public abstract class GenericDAO<T extends AbstractModel> extends AbstractDAO<T> { private HibernateQueryFactory factory; protected GenericDAO(SessionFactory sessionFactory) { super(sessionFactory); this.factory = new HibernateQueryFactory(() -> currentSession()); } protected HibernateQueryFactory query() { return factory; } public void saveOrUpdate(T model) { persist(model); } public void saveOrUpdate(Collection<T> models) { models.forEach(m -> persist(m)); } public void update(T model) { currentSession().merge(model); } public T findById(Long id) { return get(id); } public void delete(T object) { if (object != null) { currentSession().delete(object); } } public int delete(Collection<T> objects) { objects.forEach(o -> delete(o)); return objects.size(); } }