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