Spring HibernateTemplate的使用
Spring HibernateTemplate的使用
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
2.在applicationContext.xml文件中创建数据源和SessionFactory(已使用ThreadLocal类,一个线程一个Session)
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@127.0.0.1:1521:mumu</value>
</property>
<property name="username">
<value>liulibo</value>
</property>
<property name="password">
<value>liulibo</value>
</property>
</bean>
<bean id="PropertiesFactoryBean" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="properties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<property name="hibernateProperties">
<ref bean="PropertiesFactoryBean" />
</property>
<property name="mappingResources">
<list>
<value>xml/person.hbm.xml</value>
</list>
</property>
</bean>
3.使用HibernateTemplate对象查询数据库(LocalSessionFactoryBean已使用ThreadLocal类,即一个线程一个Session)
注:HibernateTemplate会自动关闭Session,hibernate中用HQL语句占位符用的是:XX,而在HibernateTemplate中find用的是?
3.1.在spring-servlet.xml文件中将sessionFactory注入Dao实现类中
在Dao实现类通过sessionFactory创建HibernateTemplate对象查询
3.2继承HibernateDaoSupport类(建议)
HibernateDaoSupport属性:sessionFactory(必须的)
在spring-servlet.xml文件中将sessionFactory注入HibernateDaoSupport继承Dao实现类中
使用getHibernateTemplate()获取HibernateTemplate对象查询
3.3在spring-servlet.xml文件中将sessionFactory注入org.springframework.orm.hibernate3.HibernateTemplate类中创建HibernateTemplate对象中
HibernateTemplate属性:sessionFactory(必须的)(建议)
在Dao实现类中注入HibernateTemplate对象
可用HibernateTemplate对象自定义查询execute(HibernateCallback实现类通过doInHibernate方法使用org.hibernate.Session查询)
4.过滤器.在web.xml中通过过滤器解决Hibernate延迟加载问题(实质:在调用HibernateTemplate方法查询数据库之前和之后获取.关闭Session. )
注:不能自己关闭session,LocalSessionFactoryBean对象名必须为sessionFactory
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
5.事务(实质:在Hibernate中一个Session只能有一个Ttransaction的commit()有效,故在调用业务方法前后添加事务的开启和关闭)
注:自己的commit()都是无效的提交
在applictionContext.xml中创建事务管理器
<bean id="HibernateTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
在spring-servlet.xml中通过事务管理器创建代理类
<bean id="proxyPersonBiz" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="HibernateTransactionManager"/>
</property>
<property name="target"><ref bean="PersonBiz"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED,-exception.AddException</prop>
<prop key="update">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
将代理类注入控制器子类中.使用代理Biz
Spring HibernateTemplate的使用的更多相关文章
- 从Spring HibernateTemplate模板方法设计模式的实现谈起
概述 模板方法模式是GOF设计模式中很典型的设计模式,其意图是由抽象父类控制顶级逻辑,并把基本操作的实现推迟到子类去实现,这是通过继承的手段来达到对象的复用.Spring模板方法模式实际是模板方法模式 ...
- Spring HibernateTemplate与HibernateDaoSupport对比
HibernateTemplate与HibernateDaoSupport两者都是spring整合hibernate提供的模板技术. 对于保存一个对象,HibernateTemplate需要先配置 配 ...
- Spring HibernateTemplate
HibernateTemplate利用模板设计模式,可将重复的opensession getcurrentsession工作省去,只将必要操作执行即可,其它的由spring来帮我们处理. < ...
- spring HibernateTemplate.save() 方法的自动提交问题
如题: service1: dao1.save(obj); //失败,应该给spring捕获,但没有,程序继续执行下去了. redisService.fun1(); //被执行 service2 ...
- Hibernate整合Spring异常'sessionFactory' or 'hibernateTemplate' is required
今日在写GenericDao时,发现了一个异常,内容如下: org.springframework.beans.factory.BeanCreationException: Error creatin ...
- HibernateTemplate和HibernateDaoSupport(spring注入问题)
HibernateTemplate HibernateTemplate是spring提供的一个就hibernate访问持久层技术而言.支持Dao组件的一个工具.HibernateTemplate提供持 ...
- 集成Spring后HibernateTemplate实现分页
spring 整合 hibernate 时候用的 HibernateTemplate 不支持分页,因此需要自己包装一个类进行分页,具体实现如下...使用spring的hibernateTemplate ...
- hibernateTemplate HibernateDaoSupport不建议在Spring与Hibernate整合中使用
HibernateTemplate类属于spring框架中的类 :org.springframework.orm.hibernate3.HibernateTemplate HibernateTempl ...
- Spring aop与HibernateTemplate——session管理(每事务一次 Session)
一.HibernateTemplate与Spring aop简介 参见http://bbs.csdn.net/topics/340207475中网友blueram的发言.(感谢blueram) 二.在 ...
随机推荐
- WDCP LNMPA和LNMP 504 Gateway time-out错误的解决方法
Nginx的特点是处理静态很给力,Apache的特点是处理动态很稳定,两者结合起来便是LNMPA,nginx处理前端,apache处理后端,这样处理静态会很快,处理动态会很稳定.当我以为安装完成以后便 ...
- Python核心编程(第七章)--映像和集合类型
字典:它是一个容器类型,能存储任意个数的Python对象,也包括其他容器类型,Python的字典是作为可变的哈希表实现的 映像类型中的数据是无序排列的 可以用工厂方法dict()来创建字典,也可以 ...
- 列表:一个打了激素的数组2 - 零基础入门学习Python011
列表:一个打了激素的数组2 让编程改变世界 Change the world by program 从列表中获取元素 跟数组一样,我们可以通过元素的索引值(index)从列表获取单个元素,注意,列表索 ...
- Xcode中C、C++、Object-C3种语言的混编
转自: http://hi.baidu.com/onejw/item/f34390c997cdc226a1b50ae http://www.cocoachina.com/ask/questions/s ...
- 串口屏之------Usart GPU 使用手册
Usart GPU 使用手册 文档更新日期 更新内容 2014-9-10 C编程sprintf问题 2014-8-8 版本程序1.0,升级了自定义波特率部分 ------ 原始版本 第一部分:基础应用 ...
- 【转】 ubuntu下fastboot找不到devices
原文网址:http://memory.blog.51cto.com/6054201/1202420 转载补充: 1.首先,手机必须先进入bootloader状态,fastboot devices才能有 ...
- Grid++Report 数据填充教程
用 Grid++Report的报表设计器应用程序设计一个简单的报表:“机房开发收入总汇表” 一.定义报表头 1.执行菜单命令“插入”→“报表头” 2.执行菜单命令“插 ...
- 第12讲- Android之消息提示Toast
第12讲 Android之消息提示Toast .Toast Toast 是一个 View 视图,在应用程序上浮动显示少量的信息给用户,它永远不会获得焦点,不影响用户的输入等操作,主要用于向用户显示一些 ...
- Hibernate框架增删改查
package cn.happy.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org ...
- 地下迷宫(bfs输出路径)
题解:开一个pre数组用编号代替当前位置,编号用结构题另存,其实也可以i*m+j来代替,我写的有点麻烦了; 代码: #include <iostream> #include <cst ...