注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

赚客吧

 
 
 

日志

 
 
关于我

从明天起,做一个幸福的人, 洗澡,撸管,好好工作, 从明天起,关心姑娘和票子, 我有一种追求,骚气蓬勃,春心荡漾。

网易考拉推荐

spring与hibernate整合DAO及HibernateTemplate解析  

2011-09-26 13:10:29|  分类: Hibernate |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在spring与hibernate整合以后,可以使用spring提供的org.springframework.orm.hibernate3.HibernateTemplate,或org.springframework.orm.hibernate3.support.HibernateDaoSupport来实现DAO类。

利用HibernateTemplate

  1. import org.hibernate.SessionFactory;  
  2. import org.springframework.orm.hibernate3.HibernateTemplate;  
  3. public class UserDAO implements IUserDAO{  
  4.     private HibernateTemplate hibernateTemplate;  
  5.       
  6.     public void setSessionFactory(SessionFactory sessionFactory){  
  7.         hibernateTemplate=new HibernateTemplate(sessionFactory);  
  8.     }  
  9.     public void insert(User user){  
  10.         hibernateTemplate.save(user);  
  11.     }  
  12.       
  13.     public User find(Integer id){  
  14.         User user=(User)hibernateTemplate.get(User.class, id);  
  15.         return user;  
  16.     }  
  17. }  

继承HibernateDaoSupport

  1. import org.hibernate.SessionFactory;  
  2. import org.springframework.orm.hibernate3.HibernateTemplate;  
  3. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;  
  4. public class UserDAO extends HibernateDaoSupport implements IUserDAO{  
  5.       
  6.     public void insert(User user){  
  7.         getHibernateTemplate().save(user);  
  8.     }  
  9.       
  10.     public User find(Integer id){  
  11.         User user=(User)getHibernateTemplate().get(User.class, id);  
  12.         return user;  
  13.     }  
  14. }  
继承HibernateDaoSupport的好处是可以省去一些管理SessionFactory、HibernateTemplate资源的工作,只要注入SessionFactory实例即可。Spring会采用“每次事务打开一个Session”的策略,自动提高DB访问性能。

补:纵观全局,HibernateTemplate对于DAO的简便实现至关重要,介绍方法如下

构造方法:HibernateTemplate()、HibernateTemplate(SessionFactory)、HibernateTemplate(SessionFactory,boolean allCreate)。

操作方法:
void delete(Object entity):删除指定持久化类实例;
void deleteAll(Collection entities):删除集合内部的全部持久化类实例;

List find(String queryString)、List find(String queryString, Object value)、List find(final String queryString, final Object... values):查询。 value为参数值,根据sql语句中的参数位置(0,1,2...)确定;

List findByNamedParam(String queryString, String paramName, Object value)、List findByNamedParam(final String queryString, final String[] paramNames, final Object[] values):根据参数名设置参数,进行查询;

Object get(String entityName, Serializable id):根据主键加载特定持久化类的实例;

Serializable save(final Object entity):保存新的实例。
void update(Object entity):更新实例,要求entity是持久化状态。
void saveOrUpdate(final Object entity) :根据实例状态,选择保存或更新;

void setMaxResults(int maxResults):设置最大行数,用于分页的大小。

  评论这张
 
阅读(874)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017