$.GenericDaoHibernate.java Source code

Java tutorial

Introduction

Here is the source code for $.GenericDaoHibernate.java

Source

    #set($symbol_pound='#')#set($symbol_dollar='$')#set($symbol_escape='\')
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
package ${package}.repositories;

    import java.io.Serializable;
    import java.lang.reflect.ParameterizedType;
    import java.util.List;
    import java.util.Map;
    import org.hibernate.Criteria;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.criterion.Restrictions;
    import org.springframework.transaction.annotation.Transactional;

    /**
     *
     * @author david
     */
    @Transactional
    public class GenericDaoHibernate<T, PK extends Serializable> implements GenericDao<T, PK> {

        private SessionFactory sessionFactory;
        private Class<T> entityClass;

        public GenericDaoHibernate() {
            entityClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass())
                    .getActualTypeArguments()[0];
        }

        public SessionFactory getSessionFactory() {
            return sessionFactory;
        }

        public void setSessionFactory(SessionFactory sessionFactory) {
            this.sessionFactory = sessionFactory;
        }

        private Session getSession() {
            return sessionFactory.getCurrentSession();
        }

        protected Criteria findByAttribute(String attribute, Object value) {
            return getSession().createCriteria(entityClass).add(Restrictions.eq(attribute, value));
        }

        protected Criteria findByAttributes(Map<String, Object> attributes) {
            Criteria criteria = getSession().createCriteria(entityClass);
            for (Map.Entry<String, Object> entry : attributes.entrySet()) {
                criteria.add(Restrictions.eq(entry.getKey(), entry.getValue()));
            }
            return criteria;
        }

        public void create(T t) {
            getSession().save(t);
        }

        public void update(T t) {
            getSession().update(t);
        }

        public void save(T t) {
            getSession().saveOrUpdate(t);
        }

        public void delete(T t) {
            getSession().delete(t);
        }

        public T find(PK o) {
            return (T) getSession().get(entityClass, o);
        }

        public List<T> findAll() {
            return getSession().createCriteria(entityClass).list();
        }

    }