spring hibernate dao support

package com.jaeson.springstudy.dao.impl;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.HibernateCallback;
import org.springframework.orm.hibernate4.HibernateTemplate;
import org.springframework.stereotype.Repository;

import com.jaeson.hibernatestudy.bean.Student;
import com.jaeson.springstudy.dao.StudentDao;

@Repository("hibernateTemplateStudentDao")
public class HibernateTemplateStudentDaoImpl implements StudentDao {

	private HibernateTemplate hibernateTemplate;
	
	@Autowired
	public void setSessionFactory(SessionFactory sessionFactory) {
		
        this.hibernateTemplate = new HibernateTemplate(sessionFactory);
    }
	
	@Override
	public Student findById(String id) {
		
		return this.hibernateTemplate.load(Student.class, id);
	}

	@Override
	public List<Student> findByQueryString(final String queryString, final Object... params) {
		
		return this.hibernateTemplate.execute(new HibernateCallback<List<Student>>() {
			@SuppressWarnings("unchecked")
			@Override 
			public List<Student> doInHibernate(Session session) {
				Query query = session.createQuery(queryString);
				for (int i = 0; params != null && i < params.length; i++) {
					
					query.setParameter(i, params[i]);
				}
                return query.list();
            }
        });
	}

	@Override
	public void update(Student entity) {

		this.hibernateTemplate.update(entity);
	}

	@Override
	public String save(Student entity) {
		
		return (String) this.hibernateTemplate.save(entity);
	}

	@Override
	public void saveOrUpdate(Student entity) {
		
		this.hibernateTemplate.saveOrUpdate(entity);
	}

	@Override
	public void delete(Student entity) {
		
		this.hibernateTemplate.delete(entity);
	}

	@Override
	public void deleteById(String id) {
		
		this.delete(this.findById(id));
	}

	@Override
	public void studentMethod() {
		
		throw new UnsupportedOperationException("studentMethod unsupported");
	}

	@Override
	public List<Student> findByClassid(String id) {
		
		return this.findByQueryString("from Student s where s.clazz.id=?", new Object[]{id});
	}
}
package com.jaeson.springstudy.dao.impl;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.SessionFactoryUtils;
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

import com.jaeson.hibernatestudy.bean.Student;
import com.jaeson.springstudy.dao.StudentDao;

@Repository("hibernateDaoSupportStudentDao")
public class HibernateDaoSupportStudentDaoImpl extends HibernateDaoSupport
		implements StudentDao {

	@Autowired
	public void setMySessionFactory(SessionFactory sessionFactory) {
		
        super.setSessionFactory(sessionFactory);
    }
	
	@Override
	public Student findById(String id) {

		return this.getHibernateTemplate().load(Student.class, id);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Student> findByQueryString(String queryString, Object... params) {
		
		Session session = this.currentSession();
		try {
	        	
			Query query = session.createQuery(queryString);
			for (int i = 0; params != null && i < params.length; i++) {
					
				query.setParameter(i, params[i]);
			}
			return query.list();
			
		} catch (HibernateException ex) {
			throw SessionFactoryUtils.convertHibernateAccessException(ex);
		}
	}

	@Override
	public void update(Student entity) {
		
		this.getHibernateTemplate().update(entity);
	}

	@Override
	public String save(Student entity) {

		return (String) this.getHibernateTemplate().save(entity);
	}

	@Override
	public void saveOrUpdate(Student entity) {
		
		this.getHibernateTemplate().saveOrUpdate(entity);
	}

	@Override
	public void delete(Student entity) {

		this.getHibernateTemplate().delete(entity);
	}

	@Override
	public void deleteById(String id) {
		
		this.delete(this.findById(id));
	}

	@Override
	public void studentMethod() {
		
		throw new UnsupportedOperationException("studentMethod unsupported");
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Student> findByClassid(String id) {
		
		Criteria criteria = this.currentSession().createCriteria(Student.class);
        criteria.add(Restrictions.eq("clazz.id", id));
        
        return criteria.list();
	}
}

猜你喜欢

转载自jaesonchen.iteye.com/blog/2297615