package br.com.livro.domain; import java.io.Serializable; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; /** * Hibernates DAO Gen�rico */ @SuppressWarnings("unchecked") public class HibernateDAO<T> { protected Class<T> clazz; protected Session session; @Autowired private SessionFactory sessionFactory; public HibernateDAO(Class<T> clazz) { this.clazz = clazz; } public void delete(T entity) { getSession().delete(entity); } public void update(T entity) { getSession().update(entity); } public void save(T entity) { getSession().save(entity); } public void saveOrUpdate(T entity) { getSession().saveOrUpdate(entity); } public T load(Serializable id) { return (T) getSession().load(this.clazz, id); } public T get(Serializable id) { return (T) getSession().get(this.clazz, id); } protected Query createQuery(String query) { return getSession().createQuery(query); } protected Criteria createCriteria() { return getSession().createCriteria(this.clazz); } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public Session getSession() { if (sessionFactory != null) { session = sessionFactory.getCurrentSession(); } if (session == null) { throw new RuntimeException("Hibernate session is null"); } return session; } public SessionFactory getSessionFactory() { return sessionFactory; } }