hibernateTemplate 与 hibernateDaosupport
2012-10-11 11:05
113 查看
HibernateTemplate
HibernateTemplate是Spring提供的一个就Hibernate访问持久层技术而言、支持Dao组件的一个工具。HibernateTemplate提供持久层访问模板,应用HibernateTemplate无须实现特定的接口,它只需要提供一个sessionFactory的引用就可以执行持久化操作。
该模板无需打开session及关闭Session。它只要获得SessionFactory的引用,就可以打开Session,并在持久化访问结束后关闭Session,程序开发只需要完成持久层逻辑,通用的CRUD操作由HibernateTemplate完成.
HibernateDaoSupport
HibernateDaoSupport同样也是Spring提供的、为Hibernate访问数据库的DAO组件:该类主要提供如下两个方法,方便DAO的实现:
1>public final HibernateTemplate getHibernateTemplate()
2>public final void setSessionFactory(SessionFactory sessionFactory)
其中setSessionFactory方法用来接收Spring的ApplicationContext的依赖注入,可接收配置在Spring的SessionFactory实例,getHibernateTemplate方法则用来生成HibernateTeplate模板对象来完成数据库访问。
同样常用HibernateDaoSupport中的getSession方法来获取Session对象对数据库进行操作,相对HibernateTemplate对象而言,HibernateDaoSupport应用更加灵活。
配置方案——Spring+hibernate访问数据库有以下几种方法:
1>注入SessionFactory
在spring配置文件中,对Dao注入sessionFactory,如下所示
配置文件相关配置如下:
<bean id="manageEmpDaoImpl"
class="com.cyou.lms.emp.manageemp.dao.impl.ManageEmpDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
Dao编码如下:
public
class
ManageEmpDaoImpl extends
HibernateDaoSupport implements
ManageEmpDao{
public
void
addEmp(Emp emp) {
this.getHibernateTemplate().save(emp);
}
public
List<Emp> getEmpList() {
return
null;
}
}
这里的sessionFacotry注入不是给类的,而是给继承HibernateDaoSupport类的sessionFactory,在上面源码中可以看到。这样编写的一个好处就是我们不再需要关心关闭、是否连接成功等问题。主要是很方便。但是这个不好就是java只支持单继承,所以唯一的继承给了HibernateDaoSupport有点可惜。而且也没有必要这样做。
2>注入HibernateTemplate
这种方法本质上跟上面的sessionFacotry一样,只不过进行了一层包装,好处就是Dao中的类就不用再继承那个HibernateDaoSuport了,不过要先配置好HibernateTemplate:
配置文件如下所示:
<bean
id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property
name="sessionFactory"
ref="sessionFactory"
/>
</bean>
<bean
id="manageEmpDaoImpl"
class="com.cyou.lms.emp.manageemp.dao.impl.ManageEmpDaoImpl">
<property
name="hibernateTemplate"
ref="hibernateTemplate"
/>
</bean>
DAO编码如下所示:
public
class
ManageEmpDaoImpl implements
ManageEmpDao {
private
HibernateTemplate
hibernateTemplate;
public
void
addEmp(Emp emp) {
this.hibernateTemplate.save(emp);
}
public
List<Emp> getEmpList() {
return
null;
}
public
HibernateTemplate getHibernateTemplate() {
return
hibernateTemplate;
}
public
void
setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate
= hibernateTemplate;
}
}
HibernateTemplate是Spring提供的一个就Hibernate访问持久层技术而言、支持Dao组件的一个工具。HibernateTemplate提供持久层访问模板,应用HibernateTemplate无须实现特定的接口,它只需要提供一个sessionFactory的引用就可以执行持久化操作。
该模板无需打开session及关闭Session。它只要获得SessionFactory的引用,就可以打开Session,并在持久化访问结束后关闭Session,程序开发只需要完成持久层逻辑,通用的CRUD操作由HibernateTemplate完成.
HibernateDaoSupport
HibernateDaoSupport同样也是Spring提供的、为Hibernate访问数据库的DAO组件:该类主要提供如下两个方法,方便DAO的实现:
1>public final HibernateTemplate getHibernateTemplate()
2>public final void setSessionFactory(SessionFactory sessionFactory)
其中setSessionFactory方法用来接收Spring的ApplicationContext的依赖注入,可接收配置在Spring的SessionFactory实例,getHibernateTemplate方法则用来生成HibernateTeplate模板对象来完成数据库访问。
同样常用HibernateDaoSupport中的getSession方法来获取Session对象对数据库进行操作,相对HibernateTemplate对象而言,HibernateDaoSupport应用更加灵活。
配置方案——Spring+hibernate访问数据库有以下几种方法:
1>注入SessionFactory
在spring配置文件中,对Dao注入sessionFactory,如下所示
配置文件相关配置如下:
<bean id="manageEmpDaoImpl"
class="com.cyou.lms.emp.manageemp.dao.impl.ManageEmpDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
Dao编码如下:
public
class
ManageEmpDaoImpl extends
HibernateDaoSupport implements
ManageEmpDao{
public
void
addEmp(Emp emp) {
this.getHibernateTemplate().save(emp);
}
public
List<Emp> getEmpList() {
return
null;
}
}
这里的sessionFacotry注入不是给类的,而是给继承HibernateDaoSupport类的sessionFactory,在上面源码中可以看到。这样编写的一个好处就是我们不再需要关心关闭、是否连接成功等问题。主要是很方便。但是这个不好就是java只支持单继承,所以唯一的继承给了HibernateDaoSupport有点可惜。而且也没有必要这样做。
2>注入HibernateTemplate
这种方法本质上跟上面的sessionFacotry一样,只不过进行了一层包装,好处就是Dao中的类就不用再继承那个HibernateDaoSuport了,不过要先配置好HibernateTemplate:
配置文件如下所示:
<bean
id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property
name="sessionFactory"
ref="sessionFactory"
/>
</bean>
<bean
id="manageEmpDaoImpl"
class="com.cyou.lms.emp.manageemp.dao.impl.ManageEmpDaoImpl">
<property
name="hibernateTemplate"
ref="hibernateTemplate"
/>
</bean>
DAO编码如下所示:
public
class
ManageEmpDaoImpl implements
ManageEmpDao {
private
HibernateTemplate
hibernateTemplate;
public
void
addEmp(Emp emp) {
this.hibernateTemplate.save(emp);
}
public
List<Emp> getEmpList() {
return
null;
}
public
HibernateTemplate getHibernateTemplate() {
return
hibernateTemplate;
}
public
void
setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate
= hibernateTemplate;
}
}
相关文章推荐
- 在spring+hibernate3框架中使用HibernateDaoSupport应注意的问题
- HibernateDaoSupport详解
- HibernateTemplate 和HibernateDaoSupport的session
- hibernateDaoSupport中的一些公用常用方法
- 继承了HibernateDaoSupport的DAO
- 使用注解为HibernateDaoSupport注入sessionFactory
- HibernateTemplate和HibernateDaoSupport(spring注入问题)
- HibernateDaoSupport的getSession()与HibernateTemplate的区别
- hibernateTemplate 与session的区别 HibernateTemplate、HibernateDaoSupport两种方法实现增删改查
- 关于HibernateDaoSupport getSession()不能释放资源的问题及解决方法
- Spring与Hibernate整合的HibernateDaoSupport应用中的“内存泄露”问题(学习心得)
- hibernateDaoSupport的使用步骤
- HibernateTemplate和HibernateDaoSupport
- HibernateDaoSupport的getHibernateTemplate()的find方法大全
- Spring结合Hibernate出现的异常The type org.springframework...DaoSupport cannot be resolved. It is indirectly...(
- HibernateDaoSupport的使用
- SSH之继承HibernateDaoSupport对数据库的操作和不继承HibernateDaoSupport对数据库的操作的方法
- 【转】Java程序员从笨鸟到菜鸟之(八十一)细谈Spring(十)深入源码分析Spring之HibernateTemplate 和HibernateDaoSupport
- HibernateTemplate、HibernateDaoSupport两种方法实现增删改查Good
- spring的HibernateDaoSupport以及HibernateTemplate和jdbcTemplate的选择问题