基于泛型的通用Dao接口和hibernate的实现
来源:互联网 发布:音乐相册软件 编辑:程序博客网 时间:2024/06/05 09:15
基于泛型的通用Dao接口:(主要是在使用hibernate或JPA时使用)
- package com.qiujy.dao;
- import java.io.Serializable;
- import java.util.List;
- /**
- * 基于泛型的通用Dao接口
- */
- public interface GenericDao<T> {
- void create(T entity);
- void delete(T entity);
- void update(T entity);
- T findById(Serializable id);
- List<T> findAll();
- List<T> findList(int pageNo, int pageSize);
- int getCountOfAll();
- }
hibernate对此泛型Dao接口的使用:
- package com.qiujy.dao.hibernate;
- import java.io.Serializable;
- import java.lang.reflect.ParameterizedType;
- import java.util.List;
- import org.hibernate.criterion.Projections;
- import com.qiujy.common.HibernateUtil;
- import com.qiujy.dao.GenericDao;
- /**
- * Hibernate对泛型通用Dao接口的实现
- */
- public class GenericHibernateDaoImpl<T> implements GenericDao<T> {
- private Class<T> clazz;
- @SuppressWarnings("unchecked")
- public GenericHibernateDaoImpl() {
- //通过反射获取T的类型信息实例
- this.clazz = (Class<T>)((ParameterizedType)this.getClass().getGenericSuperclass())
- .getActualTypeArguments()[0];
- }
- public void create(T entity) {
- HibernateUtil.getSession().save(entity);
- }
- public void delete(T entity) {
- HibernateUtil.getSession().delete(entity);
- }
- @SuppressWarnings("unchecked")
- public void update(T entity) {
- //HibernateUtil.getSession().saveOrUpdate(entity);
- entity = (T) HibernateUtil.getSession().merge(entity);
- }
- @SuppressWarnings("unchecked")
- public List<T> findAll() {
- return HibernateUtil.getSession().createCriteria(clazz).list();
- }
- @SuppressWarnings("unchecked")
- public List<T> findList(int pageNo, int pageSize) {
- return HibernateUtil.getSession().createCriteria(clazz)
- .setFirstResult((pageNo - 1) * pageSize)
- .setMaxResults(pageSize)
- .list();
- }
- public int getCountOfAll() {
- Integer count = (Integer) HibernateUtil.getSession()
- .createCriteria(clazz)
- .setProjection(Projections.rowCount())
- .uniqueResult();
- if (null == count) {
- return 0;
- } else {
- return count.intValue();
- }
- }
- @SuppressWarnings("unchecked")
- public T findById(Serializable id) {
- return (T)HibernateUtil.getSession().load(clazz, id); //get
- }
- }
使用泛型Dao接口:
- package com.qiujy.dao;
- import java.util.List;
- import com.qiujy.domain.Resource;
- /**
- * Resource类的Dao接口
- */
- public interface ResourceDao extends GenericDao<Resource> {
- public List<Resource> findResources(int status);
- }
使用hibernate的实现:
- package com.qiujy.dao.hibernate;
- import java.util.List;
- import com.qiujy.common.HibernateUtil;
- import com.qiujy.dao.ResourceDao;
- import com.qiujy.domain.Resource;
- public class ResourceDaoImpl extends GenericHibernateDaoImpl<Resource> implements ResourceDao {
- @SuppressWarnings("unchecked")
- public List<Resource> findResources(int status) {
- return (List<Resource>)HibernateUtil.getSession()
- .createQuery("from Resource where status=:status")
- .setInteger("status", status)
- .list();
- }
- }
- 基于泛型的通用Dao接口hibernate实现
- 基于泛型的通用Dao接口和hibernate的实现
- 基于泛型的通用Dao接口和hibernate的实现
- JAVA通用Dao接口和hibernate的实现
- JAVA通用Dao接口和hibernate的具体实现
- 做个通用Spring+Hibernate的DAO接口和实现类
- hibernate不是泛型的通用DAo
- Hibernate的通用dao
- Hibernate的通用dao
- 基于hibernate的泛型Dao框架
- 基于Spring、Hibernate的通用DAO层与Service层的实现
- 基于Spring、Hibernate的通用DAO层与Service层的实现
- 基于Spring、Hibernate的通用DAO层与Service层的实现
- 基于Spring、Hibernate的通用DAO层与Service层的实现
- 基于Spring、Hibernate的通用DAO层与Service层的实现
- Hibernate的dao接口加实现类
- 一个通用的Hibernate DAO
- 一个通用的Hibernate DAO
- Policy-Driven Mobile Ad hoc Network Management
- 找数
- Webster's New World Telecom Dictionary
- C++中线程的创建及传参
- Beginning Information Cards and CardSpace: From Novice to Professional
- 基于泛型的通用Dao接口和hibernate的实现
- Flash XML Applications: Use AS2 and AS3 to Create Photo Galleries, Menus, and Databases
- 2008年12月北大自考c++机试
- Path Routing in Mesh Optical Networks
- Programming WPF
- Silverlight 1.0
- Beginning HTML with CSS and XHTML: Modern Guide and Reference
- Oracle Automatic Storage Management: Under-the-Hood & Practical Deployment Guide
- Java Generics and Collections [ILLUSTRATED]