使用HibernateTemplateHibernateTemplate 可将Hibernate 的持久层访问模板化,使用HibernateTemplate 非常简单。创建Hi bernateTemplate 实例后,注入一个SessionFactory 的引用,就可执行持久化操作。SessionFactoyr 对象可通过构造参数传入,或通过设值方式传入。例如://获取Spring 上下文ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");//通过上下文获得SessionFactorySessionFactory sessionFactory = (SessionFactory) ctx.getBean("sessionFactory") ,HibernateTemplate 提供如下三个构造函数:• HibernateTemplateO 。• HibernateTemplate(org.hibernate.SessionFactory sessionFactory)。• HibernateTemplate(org.hibernate.SessionFactory sessionFactory, boolean allowCreate) 。
第一个构造函数:构造一个默认的HibernateTemplate 实例,因此,使用HibernateTemplate实例之前,还必须使用方法setSessionFactory(SessionFactory sessionFactory)来为HibernateTemplate 传入SessionFactory 的引用。第二个构造函数:在构造时已经传入SessionFactory 引用。第三个构造函数:其boolean 型参数表明,如果当前线程己经存在一个非事务性的Session ,是否直接返回此非事务性的Session 。对于在Web 应用中,通常启动时自动加载ApplicationContext , SessionFactory 和DAD对象都处在Spring 上下文管理下。因此无须在代码中显式设置,可采用依赖注入解耦SessionFactory 和DAO.
其依赖关系可通过配置文件来设置
<?xml version="1.0" encoding="gb2312"?><!--Spring 配置文件的DTD 定义二〉<!DOCTYPE beans PUBLIC "-!!SPRING!!DTD BEAN!!EN" ''http://www.springframework.org/dtd/spring-beans.dtd''> <! -- Spring 配置文件的根元素是beans--> <beans> <!--定义数据源,该bean 的ID 为dataSource--> <bean id=" dataSource" class=" org. springframework.jdbc. datasource. DriverManagerDataSource"> <!-- 指定数据库驱动--> <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property> <!-- 指定连接数据库的URL--> <property name="url"><value>jdbc:mysql://wonder:3306/j2ee</ value> <!property> <!-- root 为数据库的用户名--> <property name="username"><value>root</value></property> <!--pass 为数据库密码--> <property name= "password" ><value>pass</value></property> </bean> <!--定义Hibernate 的SessionFactoy--> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!--依赖注入数据源,注入正是上文定义的dataSource--> <property name="dataSource"><ref local="dataSource"/></property> <!--mappingResouces属性用来列出全部映射文件〉 <property name="mappingResources"> <list> <!--以下用来列出所有的PO 映射文件--> <value>lee/Person.hbm.xml</value> </list> </property> <!--定义Hibernate 的SessionFactory的属性--> <property name="hibernateProperties"> <props> <!-- 指定Hibernate 的连接方言--> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <!--不同数据库连接,启动时选择create , update , create-drop--> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property> </bean> <!--配置Person 持久化类的DAO bean--> <bean id="personDao" class="lee.PersonDaoImpl"> <!--采用依赖注入来传入SessionFactory的引用〉 <property name="sessionFactory"><ref local="sessionFactory"/></property> </bean></beans>
在DAO 实现类中,可采用更简单的方式来取得HibemateTemplate的实例。代码如下:
public class PersonDaoImpl implements PersonDao...{ // 执行持久化操作的HibernateTemplate HibernateTemplate ht; private SessionFactory sessionFactory; //依赖注入Sess工onFactory 的必需的setter 方法 public void setSessionFactory(SessionFactory sessionFactory) ...{ this.sessionFactory = sessionFactory; } //该方法用于完成HibernateTemplate的初始化 private void setHibernateTemplate() ...{ if (ht ==null)...{ ht = new HibernateTemplate(sessionFactory); } } /** *//** *加载Person 实例 * @param id 需要加载Person 实例的主键值 * @return 返回加载的Person 实例 */ public Person get(int id)...{ setHibernateTemplate(); return (Person)ht.get(Person.class , new Integer(id)); } /** *//** *保存Person 实例 * @param person 需要保存的Person 实例 */ public void save(Person person)...{ setHibernateTemplate() ; ht.save(person) ; } /** *//** *修改Person 实例 * @param person 需要修改的Person 实例 */ public void update(Person person)...{ setHibernateTemplate(); ht.update(person); } /** *//** *删除Person 实例 * @param id 需要删除的Person id */ public void delete(int id)...{ setHibernateTemplate(); ht.delete(ht.get(Person.class , new Integer(id))); } /** *//** *删除Person 实例 * @param perso口需要删除的Person 实例 */ public void delete(Person person)...{ setHibernateTemplate(); ht.delete(person) ; } /** *//** *根据用户名查找Person * @param name 用户名 * @return 用户名对应的全部用户 */ public List findByPerson(String name)...{ setHibernateTemplate(); return h t. find("from Person p where p.name like ?" , name); } /** *//** *返回全部的Person 实例 * @return 全部的Person 实例 */ public List findAllPerson()...{ setHibernateTemplate(); return ht.find("from Person "); }}
<!--EndFragment-->
<?xml version="1.0" encoding="gb2312"?><!--Spring 配置文件的DTD 定义二〉<!DOCTYPE beans PUBLIC "-!!SPRING!!DTD BEAN!!EN" ''http://www.springframework.org/dtd/spring-beans.dtd''> <! -- Spring 配置文件的根元素是beans--> <beans> <!--定义数据源,该bean 的ID 为dataSource--> <bean id=" dataSource" class=" org. springframework.jdbc. datasource. DriverManagerDataSource"> <!-- 指定数据库驱动--> <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property> <!-- 指定连接数据库的URL--> <property name="url"><value>jdbc:mysql://wonder:3306/j2ee</ value> <!property> <!-- root 为数据库的用户名--> <property name="username"><value>root</value></
您还没有登录,请您登录后再发表评论
hibernateTemplate的常用方法
spring HibernateTemplate汇总
Spring整合hibernate(2)之基于HibernateTemplate的整合,jar需要自己添加!
HibernateTemplate的用法总结,我自己整理的,仅供参考
对Spring框架中,HibernateTemplate的使用,底层dao中HibernateTemplate的使用以及HibernateCallBack调用等等
HibernateTemplate的方法部分使用,还有部分的个人见解,有错的,请指出,谢谢
HibernateTemplate的简单示例
HibernateTemplat技术,此文档详细描述了HibernateTemplate的方法及功能说明,并有实例。
GenericHibernateDao 继承 HibernateDao,简单封装 HibernateTemplate 各项功能,简化基于Hibernate Dao 的编写。
HibernateTemplate 的常规用法.doc HibernateTemplate 的常规用法.doc
hibernateTemplate常用方法.htm
关于使用HibernateTemplate
HibernateTemplate源代码
基于HIbernateTemplate的代码自动生成,能够自动生成dao和service文件,提高开发效率
HibernateTemplate.saveOrUpdate时出现\xE7\x84十六进制之类的字符串,连接数据库字符串,数据库字符集,汉字乱码的问题集合,还有我熬3夜的血泪经历
对于Hiberante对数据库种数据删除操作的归纳
HibernateTemplate类的使用
这是一个很好的文件,希望大家从中能找到自己的又用的部分,并且不断的进步
HibernateTemplate及generator用法.docHibernateTemplate及generator用法.doc
相关推荐
hibernateTemplate的常用方法
spring HibernateTemplate汇总
Spring整合hibernate(2)之基于HibernateTemplate的整合,jar需要自己添加!
HibernateTemplate的用法总结,我自己整理的,仅供参考
对Spring框架中,HibernateTemplate的使用,底层dao中HibernateTemplate的使用以及HibernateCallBack调用等等
HibernateTemplate的方法部分使用,还有部分的个人见解,有错的,请指出,谢谢
HibernateTemplate的简单示例
HibernateTemplat技术,此文档详细描述了HibernateTemplate的方法及功能说明,并有实例。
GenericHibernateDao 继承 HibernateDao,简单封装 HibernateTemplate 各项功能,简化基于Hibernate Dao 的编写。
HibernateTemplate 的常规用法.doc HibernateTemplate 的常规用法.doc
hibernateTemplate常用方法.htm
关于使用HibernateTemplate
HibernateTemplate源代码
基于HIbernateTemplate的代码自动生成,能够自动生成dao和service文件,提高开发效率
HibernateTemplate.saveOrUpdate时出现\xE7\x84十六进制之类的字符串,连接数据库字符串,数据库字符集,汉字乱码的问题集合,还有我熬3夜的血泪经历
对于Hiberante对数据库种数据删除操作的归纳
HibernateTemplate类的使用
这是一个很好的文件,希望大家从中能找到自己的又用的部分,并且不断的进步
HibernateTemplate及generator用法.docHibernateTemplate及generator用法.doc