- 浏览: 43809 次
- 性别:
- 来自: 北京
文章分类
最新评论
引用自:http://www.cnblogs.com/Angi/articles/2007552.html
1、TransactionProxyFactoryBean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="TblUserDAO" class="com.angi.dao.TblUserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!-- 声明一个 Hibernate 3 的 事务管理器供代理类自动管理事务用 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="TblUserDAOProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<!--
注意这个属性, 详细意义请参考Spring文档中的CGLIB部分或者本章的 10.7.2参考资料部分, 必须为 true
使用CGLIB才不用强制编写DAO接口
-->
<property name="proxyTargetClass">
<value>true</value>
</property>
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="TblUserDAO" />
</property>
<property name="transactionAttributes">
<props>
<!-- 这里的方法签名可以精确到方法, 先懒惰一下全配置上 -->
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
</beans>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="TblUserDAO" class="com.angi.dao.TblUserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!-- 声明一个 Hibernate 3 的 事务管理器供代理类自动管理事务用 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean id="TblUserDAOProxy"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<!--
注意这个属性, 详细意义请参考Spring文档中的CGLIB部分或者本章的 10.7.2参考资料部分, 必须为 true
使用CGLIB才不用强制编写DAO接口
-->
<property name="proxyTargetClass">
<value>true</value>
</property>
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="TblUserDAO" />
</property>
<property name="transactionAttributes">
<props>
<!-- 这里的方法签名可以精确到方法, 先懒惰一下全配置上 -->
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
</beans>
2、TransactionInterceptor
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="tblUserDAO" class="com.angi.dao.TblUserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="tblUserService" class="com.angi.dao.service.TblUserService">
<property name="tblUserDAO">
<ref bean="tblUserDAO" />
</property>
</bean>
<!-- 声明一个 Hibernate 3 的 事务管理器供代理类自动管理事务用 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>tblUserService</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<!-- 这里的方法签名可以精确到方法, 先懒惰一下全配置上 -->
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
</beans>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="tblUserDAO" class="com.angi.dao.TblUserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="tblUserService" class="com.angi.dao.service.TblUserService">
<property name="tblUserDAO">
<ref bean="tblUserDAO" />
</property>
</bean>
<!-- 声明一个 Hibernate 3 的 事务管理器供代理类自动管理事务用 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<bean
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>tblUserService</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<!-- 这里的方法签名可以精确到方法, 先懒惰一下全配置上 -->
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
</beans>
3、AOP和TX配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="tblUserDAO" class="com.angi.dao.TblUserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="tblUserService" class="com.angi.dao.service.TblUserService">
<property name="tblUserDAO">
<ref bean="tblUserDAO" />
</property>
</bean>
<!-- 声明一个 Hibernate 3 的 事务管理器供代理类自动管理事务用 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- 需要引入aop的命名空间 -->
<aop:config>
<!-- 切入点指明了在执行Service的所有方法时产生事务拦截操作 -->
<aop:pointcut id="daoMethods"
expression="execution(* com.angi.dao.service.TblUserService.*(..))" />
<!-- 定义了将采用何种拦截操作,这里引用到 txAdvice -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="daoMethods" />
</aop:config>
<!-- 需要引入tx的命名空间 -->
<!-- 这是事务通知操作,使用的事务管理器引用自 transactionManager -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 指定哪些方法需要加入事务,这里懒惰一下全部加入,可以使用通配符来只加入需要的方法 -->
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
</beans>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="tblUserDAO" class="com.angi.dao.TblUserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="tblUserService" class="com.angi.dao.service.TblUserService">
<property name="tblUserDAO">
<ref bean="tblUserDAO" />
</property>
</bean>
<!-- 声明一个 Hibernate 3 的 事务管理器供代理类自动管理事务用 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- 需要引入aop的命名空间 -->
<aop:config>
<!-- 切入点指明了在执行Service的所有方法时产生事务拦截操作 -->
<aop:pointcut id="daoMethods"
expression="execution(* com.angi.dao.service.TblUserService.*(..))" />
<!-- 定义了将采用何种拦截操作,这里引用到 txAdvice -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="daoMethods" />
</aop:config>
<!-- 需要引入tx的命名空间 -->
<!-- 这是事务通知操作,使用的事务管理器引用自 transactionManager -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 指定哪些方法需要加入事务,这里懒惰一下全部加入,可以使用通配符来只加入需要的方法 -->
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
</beans>
4、anotation
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">
<!-- 需要引入tx的命名空间 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="tblUserDAO" class="com.angi.dao.TblUserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="tblUserService" class="com.angi.dao.service.TblUserService">
<property name="tblUserDAO">
<ref bean="tblUserDAO" />
</property>
</bean>
<!-- 声明一个 Hibernate3 的事务管理器供代理类自动管理事务用 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
</beans>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">
<!-- 需要引入tx的命名空间 -->
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="tblUserDAO" class="com.angi.dao.TblUserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="tblUserService" class="com.angi.dao.service.TblUserService">
<property name="tblUserDAO">
<ref bean="tblUserDAO" />
</property>
</bean>
<!-- 声明一个 Hibernate3 的事务管理器供代理类自动管理事务用 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
</beans>
@Transactional
public void doTransaction() {
// step1 insert
TblUser tblUser1 = new TblUser();
tblUser1.setId(24);
tblUser1.setUsername("Angi12");
tblUser1.setPassword("Wang21");
tblUserDAO.save(tblUser1);
// step2 update
TblUser tblUser2 = tblUserDAO.findById(2);
tblUser2.setPassword(tblUser2.getPassword() + "a");
tblUserDAO.update(tblUser2);
// step3 insert
TblUser tblUser = new TblUser();
tblUser.setId(23);
tblUser.setUsername("Angi");
tblUser.setPassword("Wang");
tblUserDAO.save(tblUser);
}
public void doTransaction() {
// step1 insert
TblUser tblUser1 = new TblUser();
tblUser1.setId(24);
tblUser1.setUsername("Angi12");
tblUser1.setPassword("Wang21");
tblUserDAO.save(tblUser1);
// step2 update
TblUser tblUser2 = tblUserDAO.findById(2);
tblUser2.setPassword(tblUser2.getPassword() + "a");
tblUserDAO.update(tblUser2);
// step3 insert
TblUser tblUser = new TblUser();
tblUser.setId(23);
tblUser.setUsername("Angi");
tblUser.setPassword("Wang");
tblUserDAO.save(tblUser);
}
发表评论
-
Python检测Windows剩余磁盘空间
2012-10-28 12:34 8762参考: http://linuxshow.blog.51ct ... -
Struts2/XWork 安全漏洞Remote Command Execution(二)
2012-06-03 08:39 3171Struts2/XWork 安全漏洞Remote Comman ... -
Tomcat性能调优方案
2012-01-12 07:25 664http://qibaopeng2000.blog.163. ... -
Tomcat内存、连接数等性能参数设置
2012-01-12 07:14 805http://space.itpub.net/144019 ... -
tomcat服务器连接数问题解决
2012-01-12 07:04 928http://blog.csdn.net/ruixj/art ... -
"ORA-28002"提示信息解决(Ver:11g)
2012-01-02 21:11 1015http://blog.163.com/z_rx/blog ... -
struts2文件上传大小
2011-12-19 23:39 725引用自:http://www.cnblogs.com/h ... -
Ext window 相对位置
2011-12-05 22:57 1697var win = Ext.create('Ext.Windo ... -
非功能性的测试培训
2010-07-18 07:32 0参加了一个测试的培训,讲的是性能、安全等非基本功能 ... -
JQuery的Post提交的参数
2010-05-26 08:14 5424需要提交一个数字签名串,感觉数据量有点大,用的JQ ... -
关于基础组件的思考
2010-05-15 01:46 782使用了一个基础组件,它提供了自己的接口方法,强化了封 ... -
给自己定一些规则
2010-05-12 00:24 8742010-5-12 首先逻辑要简单,然后再追求复用。 ... -
Hibernate模糊查询
2010-05-11 08:23 2080看了官方文档的模糊查询,觉得不够。也看了几篇介绍基本 ... -
Hibernate的Event-listener业务审计日志的一个思路
2010-05-09 02:00 3165需要实现一个日志审计的功能,从JE上看到了一个 ...
相关推荐
在`Spring_1800_Spring_Hibernate_Transaction_Annotation`这个压缩包文件中,很可能包含了使用注解方式实现Spring整合Hibernate事务处理的相关示例代码和配置文件。通过阅读和理解这些代码,你可以更好地掌握这一...
本文将深入探讨Spring与Hibernate整合时的事务管理,帮助你更好地理解和运用这些技术。 首先,Spring框架是Java企业级应用的基石,它提供了一种依赖注入(Dependency Injection,DI)的方式,使得组件之间的耦合度...
2. Hibernate事务管理:使用`HibernateTransactionManager`结合SessionFactory进行事务控制。 3. AOP(面向切面编程)在事务管理中的应用:`TransactionInterceptor`基于AOP拦截方法调用,处理事务。 4. 配置事务...
1. **Hibernate事务管理:** - Session API:Hibernate的Session对象是操作数据库的基本单元,它支持begin、commit和rollback等事务操作。 - Transaction API:Hibernate的Transaction接口提供了更高级别的事务...
5. **事务管理**: Spring提供了声明式事务管理,可以在配置文件中定义事务管理器,并在需要事务控制的方法上添加`@Transactional`注解。这样,Spring会自动处理事务的开始、提交或回滚。 6. **测试和运行**: 最后,...
在本篇“Spring Hibernate 事务管理学习笔记(二)”中,我们将深入探讨Spring框架与Hibernate集成时如何实现高效、安全的事务管理。这是一篇关于源码分析和技术工具使用的文章,适合对Java开发和数据库操作有基础...
本实例将深入探讨如何结合Spring的注解声明式事务管理与Hibernate的数据访问技术,构建一个完整的事务处理系统。 Spring框架以其灵活的依赖注入(DI)和面向切面编程(AOP)闻名,它允许开发者将事务管理从业务逻辑...
在"声明式事务控制,spring2.5+hibernate3集成源码"中,开发者可以学习如何配置Spring的事务管理器,以及如何在Hibernate的SessionFactory和SessionFactoryBuilder上使用Spring的TransactionProxyFactoryBean来创建...
3. **配置Spring**:在src/main/resources下创建applicationContext.xml文件,配置Spring的核心容器,包括Bean定义、数据源、事务管理器等。例如,使用DataSource来连接Oracle数据库,使用...
Hibernate作为持久层框架,它自身也提供了事务管理,但通常在Spring环境下,我们会让Spring接管事务,以便在整个应用中保持一致的事务策略。Spring通过JDBC的DataSourceTransactionManager或Hibernate的...
本项目是关于如何使用Spring MVC与Hibernate结合来实现事务管理的实践教程,通过MyEclipse自动生成所需的包和配置文件。这里将详细讲解这一过程,以及涉及到的关键知识点。 首先,Spring MVC作为Spring框架的一部分...
在Spring框架中集成和配置Hibernate事务管理是企业级Java应用中的常见实践,它能提供高效且灵活的事务处理策略。Spring作为一款强大的依赖注入(DI)和面向切面编程(AOP)容器,能够轻松地管理和协调不同数据访问...
Spring 是一个全面的后端应用程序框架,提供了依赖注入、面向切面编程、数据访问、事务管理等多种功能。Hibernate 则是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,将 Java 对象与数据库表进行映射,...
本篇文章将重点讨论如何在Spring框架中集成Hibernate,并探讨编程式事务管理和Spring AOP的声明式事务。 首先,让我们理解Spring与Hibernate的集成。为了整合这两个库,你需要在Spring配置文件中定义Hibernate的...
本示例“第二部分spring+hibernate+jta 分布式事务Demo”将帮助我们理解如何在这三个框架之间协同工作,实现高效且可靠的事务管理。 首先,让我们深入了解一下这三个组件: 1. **Spring**:这是一个全面的Java应用...
Spring框架则是一个全面的企业级应用开发平台,它不仅包含Spring MVC,还提供了依赖注入(DI)、AOP(面向切面编程)、事务管理、JDBC抽象、缓存、任务调度等多个核心功能。在全注解开发中,我们可以使用@Autowired...
此外,Spring还提供了一种声明式事务管理方式,确保数据的一致性和完整性。 **Hibernate ORM** Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互。在我们的博客系统中,Hibernate负责...
两个项目,一个项目是基于spring jdbc实现的分布式事务,一个是基于spring hibernate的分布式事务,hibernate项目里的applicationContext2.xml是基于mysql和mssql, applicationContext3.xml基于两个mssql, ...
此外,Spring还提供了与其他框架的整合包,如Spring与Hibernate的整合,使得事务管理、数据访问变得更加便捷。 **Hibernate** 是一个强大的对象关系映射(Object-Relational Mapping,ORM)框架,它将数据库操作...