科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Generic Data Access Objects 设计模式

Generic Data Access Objects 设计模式

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

普通数据访问对象,这个是Hibernate官方网站上面的一个DAO类的设计模式,基于JDK5.0范型支持,文章地址如下:http://www.hibernate.org/328.html

作者:中国IT实验室 来源:中国IT实验室 2007年8月26日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
  1. @SuppressWarnings("unchecked")  
  2.     public T findById(ID id, boolean lock)  
  3.     {  
  4.         T entity;  
  5.         if (lock)  
  6.             entity = (T) getSession().load(getPersistentClass(), id, LockMode.UPGRADE);  
  7.         else  
  8.             entity = findById(id);  
  9.   
  10.         return entity;  
  11.     }  
  12.   
  13.     @SuppressWarnings("unchecked")  
  14.     public List findAll()  
  15.     {  
  16.         return findByCriteria();  
  17.     }  
  18.   
  19.     @SuppressWarnings("unchecked")  
  20.     public List findByExample(T exampleInstance)  
  21.     {  
  22.         Criteria crit = getSession().createCriteria(getPersistentClass());  
  23.         Example example = Example.create(exampleInstance);  
  24.         crit.add(example);  
  25.         return crit.list();  
  26.     }  
  27.       
  28.     @SuppressWarnings("unchecked")  
  29.     public List findByExample(T exampleInstance, String[] excludeProperty)  
  30.     {  
  31.         Criteria crit = getSession().createCriteria(getPersistentClass());  
  32.         Example example = Example.create(exampleInstance);  
  33.         for (String exclude : excludeProperty)  
  34.         {  
  35.             example.excludeProperty(exclude);  
  36.         }  
  37.         crit.add(example);  
  38.         return crit.list();  
  39.     }  
  40.   
  41.     @SuppressWarnings("unchecked")  
  42.     public T makePersistent(T entity)  
  43.     {  
  44.         getSession().saveOrUpdate(entity);  
  45.         //getSession().save(entity);  
  46.         return entity;  
  47.     }  
  48.   
  49.     public void makeTransient(T entity)  
  50.     {  
  51.         getSession().delete(entity);  
  52.     }  
  53.   
  54.     @SuppressWarnings("unchecked")  
  55.     protected List findByCriteria(Criterion... criterion)  
  56.     {  
  57.         Criteria crit = getSession().createCriteria(getPersistentClass());  
  58.         for (Criterion c : criterion)  
  59.         {  
  60.             crit.add(c);  
  61.         }  
  62.         return crit.list();  
  63.     }  
  64.       
  65.     @SuppressWarnings("unchecked")  
  66.     /** 
  67.      * 增加了排序的功能。 
  68.      */  
  69.     protected List findByCriteria(Order order,Criterion... criterion)  
  70.     {  
  71.         Criteria crit = getSession().createCriteria(getPersistentClass());  
  72.         for (Criterion c : criterion)  
  73.         {  
  74.             crit.add(c);  
  75.         }  
  76.         if(order!=null)  
  77.             crit.addOrder(order);  
  78.         return crit.list();  
  79.     }  
  80.       
  81.     @SuppressWarnings("unchecked")  
  82.     protected List findByCriteria(int firstResult,int rowCount,Order order,Criterion... criterion)  
  83.     {  
  84.         Criteria crit = getSession().createCriteria(getPersistentClass());  
  85.         for (Criterion c : criterion)  
  86.         {  
  87.             crit.add(c);  
  88.         }  
  89.         if(order!=null)  
  90.             crit.addOrder(order);  
  91.         crit.setFirstResult(firstResult);  
  92.         crit.setMaxResults(rowCount);  
  93.         return crit.list();  
  94.     }  
  95. }  
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章