Hibernate DAO的具体实现

转载 2012年03月27日 10:37:13

定义BaseDAO: (增/删/改/查单个/查集合/查集合2)

 

Java代码
  1. public interface BaseDAO{   
  2.     <T>void add(T object);   
  3.     <T>void delete(Class clazz,Serializable id);   
  4.     <T>void update(T clazz);   
  5.     <T> T get(Class<T> clazz,Serializable id);   
  6.     <T>List<T>search(Class<T> clazz);   
  7.     <T>List<T> search(Class<T> clazz,Object condition);      
  8. }  

 

 然后再impl包中实现该接口:

 

Java代码
  1. public class BaseDAOSupport implements BaseDAO {   
  2.   
  3.     private Session session;   
  4.   
  5.     protected Session getSession() {   
  6.         return HibernateSessionFactory.getSession();   
  7.     }   
  8.     public void setSession(Session session) {   
  9.         this.session = session;   
  10.     }   
  11.     /**  
  12.      * 增加  
  13.      */  
  14.     public <T> void add(T object) {   
  15.         Transaction ts = null;   
  16.         try {   
  17.             ts = getSession().beginTransaction();   
  18.             getSession().save(object);   
  19.             ts.commit();   
  20.         } catch (HibernateException e) {   
  21.             if(null != ts){   
  22.                 ts.rollback();   
  23.             }   
  24.             e.printStackTrace();   
  25.         }finally{   
  26.             HibernateSessionFactory.closeSession();   
  27.         }          
  28.            
  29.     }   
  30.     /**  
  31.      * 删除  
  32.      */  
  33.     public <T> void delete(Class clazz,Serializable id) {   
  34.         Transaction ts = null;   
  35.         try {   
  36.             ts = getSession().beginTransaction();   
  37.             getSession().delete(get(clazz, id));   
  38.             ts.commit();   
  39.         } catch (HibernateException e) {   
  40.             if(null != ts){   
  41.                 ts.rollback();   
  42.             }   
  43.             e.printStackTrace();   
  44.         }finally{   
  45.             HibernateSessionFactory.closeSession();   
  46.         }          
  47.     }   
  48.     /**  
  49.      * 更新  
  50.      */  
  51.     public <T> void update(T clazz) {   
  52.         Transaction ts = null;   
  53.         try {   
  54.             ts = getSession().beginTransaction();   
  55.             getSession().update(clazz);   
  56.             ts.commit();   
  57.         } catch (HibernateException e) {   
  58.             if(null != ts){   
  59.                 ts.rollback();   
  60.             }   
  61.             e.printStackTrace();   
  62.         }finally{   
  63.             HibernateSessionFactory.closeSession();   
  64.         }      
  65.            
  66.     }   
  67.     /**  
  68.      * 查询单个  
  69.      */  
  70.     public <T> T get(Class<T> clazz, Serializable id) {   
  71.         return (T) getSession().get(clazz, id);   
  72.     }   
  73.     /**  
  74.      * 无条件查询集合  
  75.      */  
  76.     public <T> List<T> search(Class<T> clazz) {   
  77.         List<T> list = getSession().createCriteria(clazz).list();   
  78.         return list ;   
  79.     }   
  80.     /**  
  81.      * 有条件查询集合  
  82.      */  
  83.     public <T> List<T> search(Class<T> clazz, Object condition) {   
  84.         List<T> list = getSession().createCriteria(clazz).add(Example.create(condition)).list();   
  85.         return list;   
  86.     }   
  87.   
  88. }  

eclipse从数据库逆向生成Hibernate实体类

做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再“自己”建立一变VO。意思是,在项目设计时,要么...
  • zhangbingtao2011
  • zhangbingtao2011
  • 2016年10月08日 10:47
  • 1700

基于Spring、Hibernate的通用DAO层与Service层的实现

因为DAO层基本的就是CRUD操作,变化不是很大,要是有变化的那就是查询。而确实没有必要为每一个实体写一个完整的DAO,但是没有还不行,那就“抽取”出来吧。而Service依赖与DAO层,有时就是简单...
  • zhaowei_ha
  • zhaowei_ha
  • 2014年02月12日 12:57
  • 4690

MyEclipse利用自定义模板生成hibernate的dao或实体

最近一直在学习SSH(Spring+Strucs+hibernate)相关知识,自己尝试着利用这三大框架定制适合自己业务的框架架构,其中就遇到过如何生成自己的想要的dao,下面给大家分享一下,我的经验...
  • yushuainihao
  • yushuainihao
  • 2015年10月19日 19:42
  • 1468

javaEE DAO具体实现方法源码

  • 2012年10月17日 10:14
  • 1.09MB
  • 下载

SSH动态查询具体实现之Dao

SSH动态查询具体实现之Dao层具体代码分析
  • qiyuexuel
  • qiyuexuel
  • 2013年12月19日 18:57
  • 2300

TCP/IP的具体实现源码教材

  • 2014年12月04日 11:14
  • 4.9MB
  • 下载

音乐的播放具体实现

  • 2012年10月06日 16:20
  • 817B
  • 下载

飞思卡尔小车具体实现

  • 2013年04月18日 18:54
  • 1.93MB
  • 下载

DES算法具体实现

  • 2011年12月26日 19:14
  • 4.74MB
  • 下载

EWB的介绍和具体实现过程

  • 2011年12月04日 15:20
  • 972KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate DAO的具体实现
举报原因:
原因补充:

(最多只允许输入30个字)