`
roundlight
  • 浏览: 66395 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Spring 事务管理,请指教

阅读更多
Spring 事务管理,请指教
我最近要做框架设计, 在对框架进行分析的时候,被 Spring的事务管理机制给迷惑了,
请对Spring的事务管理 熟悉的人给与帮助, 恳请指教; 谢谢

另外,在网络中看到的关于 Spring的事务管理,都是从Spring的帮助文档中照搬的东西,毫无意义,我想结合实际如果能够给与帮助提示是最好不过的了,

针对Spring的 编程式和声明式,两种事务管理方式

我一直在线,谢谢大家的帮助
分享到:
评论
6 楼 roundlight 2007-08-09  
spring 事务管理,提出的实际比较早,但是最近在忙框架整合的工作,所以就放下了,没有继续;

进行经过了实例进行测试,终于了重大突破,发现Spring框架的事务管理能力,真是不错, 今天也终于进行了实际的验证测试;

收获多于付出阿,哈哈
5 楼 roundlight 2007-07-31  
TO: qqwjz

   老兄,怎么没有加我呢? 我确实无法登陆qq,有时间加我,等待和你交流阿
4 楼 roundlight 2007-07-30  
TO:qqwjz
很高兴认识你啊,老兄,看了一下你的讲解,可是,我工作时间无法上qq的,我们公司管理比较严格,能不能给我msn的联系方式;
我的msn:roundlight@hotmail.com
希望能和你交流, 加我的时候注上 qqwjz ,谢谢帮助!
3 楼 qqwjz 2007-07-26  
我来试着帮你回答:
先看看这个配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	   <property name="driverClassName">
	      <value>oracle.jdbc.driver.OracleDriver</value>	      
	   </property>
	   <property name="url">
	      <value>jdbc:oracle:thin:@localhost:1521:qqwjz</value>	   
	   </property>
	   <property name="username">
	      <value>wjz</value>
	   </property>
	   <property name="password">
	      <value>wjz</value>
	   </property>
	 
	</bean>	
	
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
	   <property  name="dataSource">
	     <ref local="dataSource"/>
	   </property>
	   <property name="mappingResources">
	      <list>
	         <value>com/wjz/po/Father.hbm.xml</value>
	         <value>com/wjz/po/KwmisSubject.hbm.xml</value>	    	      
	      </list>
	   </property>
	</bean>
	
	<bean id="testServer" class="com.wjz.service.impl.TestServerImpl">
	  <property name="testDao">
	     <bean id="testDao" class="com.wjz.dao.impl.TestDaoImpl">
	        <property name="sessionFactory">
	           <ref local="sessionFactory"/>
	        </property>
	     </bean>	     
	  </property>
	  <property name="kwmisSubjectDao">
	   <bean id="kwmisSubjectDao" class="com.wjz.dao.impl.KwmisSubjectDaoImp">
	        <property name="sessionFactory">
	           <ref local="sessionFactory"/>
	        </property>
	     </bean>		
	  </property>
	</bean>
	
   <bean id="testSpringService" parent="txProxyTemplate">
      <property name="target">
       <ref local="testServer"/>
      </property>
   </bean>
	
   <bean id="myTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>

	<bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="myTransactionManager" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="find*">PROPAGATION_REQUIRED, readOnly</prop>
				<prop key="get*">PROPAGATION_REQUIRED, readOnly</prop>
				<prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
			</props>
		</property>
	</bean>
</beans>


我使用的是Strut+Spring+Hibernate框架,事务管理的数据库连接是Session。你用的是JDBC,配置方面不同,但大同小异
<bean id="myTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>


把这个事务管理器换成JDBC方式即可。其他的地方都不变。
我想强调的是
<prop key="*">PROPAGATION_REQUIRED[b],-Exception[/b]


Spring中对异常回滚,默认是在抛出运行时异常时才回滚,对非运行时异常无回滚。这里使用了-Exception,意思是对所以的异常(运行时,非运行时)异常都回滚。

另外要想用Spring的事务管理机制,就需要把数据库的连接交给Spring来管理,(JDBC,SESSION道理一样),如果使用Hibernate框架,要把Session交给Spring管理。在整个Service方法调用中,虽然Sevice调用了多个Dao,但是整个过程中Session只有一个。也就是说你对数据库的DML操作,都会先保存在这个Session中,包括update,insert,delete。当发生异常(这个异常可以时数据库的,也可以时程序的),Spring会把这个Session中对应的DML操作回滚。切记在Service中只有一个Session。否则无法回滚。

这是我在使用Spring事务管理机制时候印象很深的地方。虽然没有说的很全,我相信会给你一些帮助的。
要是有问题,可以和我联系QQ:545585662。我们一起研究
2 楼 roundlight 2007-07-24  
今天看了两篇Spring事务处理的文章,收获不少,希望大家能够在此帖中多交流,感谢关注
1 楼 roundlight 2007-07-24  
请高手留言,帮我看一下Spring 在管理事务的问题,
我这里有一个系统,是用 Struts+Spring+JDBC 写的,但是关于事务处理这一块,我没有搞明白,希望 高手进来,一同探讨

谢谢大家

相关推荐

    hibernate+spring+struts2

    (2)运用struts1.2+hibernate+spring 框架,数据库连接池,事务管理; (3)Struts 应用国际化,Struts 标签库与Tiles框架, JSTL标签库,Spring IOC; (4)采用优化性能技术,采用oscache缓存,freemarker静态页面生成; (5)...

    spring源码,配套完善的注释

    通过DataSource和TransactionManager的配置,Spring可以提供统一的事务管理,简化数据访问层的编程模型。 5. **MVC框架**:Spring MVC是Spring提供的Web应用开发框架,它将模型、视图、控制器分离,使得开发更易于...

    购物管理系统

    个人水平有限,如有问题与建议,请指教! (1)个人独立完成,包括mysql数据库设计,后台程序编写,前台美工设计; (2)运用struts1.2+hibernate+spring 框架,数据库连接池,事务管理; (3)Struts 应用国际化,Struts 标签...

    绿色健康购物网SSH webdgs

    java多线程绿色健康购物网SSH 个人水平有限,如有问题与建议,请指教!(1)个人独立完成,包括mysql数据库设计,后台程序编写,前台美工设计;(2)运用struts1.2+hibernate+spring 框架,数据库连接池,事务管理;(3)...

    ssh框架整合step by step (springMVC + spring 5.0.4 + hibernate 5.0.12)

    ssh框架搭建step by step (springMVC + spring 5.0.4 + hibernate 5.0.12) 好久不弄web了, 周末心血来潮, 使用较新spirng/hibernate搭建一个ssh框架, 供有需要的同学参考/学习/使用. ...如有疑问请留言, 欢迎指教交流!

    spring+springmvc+mybatis+结合前端easyUI框架,log4j日志文件配置

    同时,MyBatis的配置文件需包含数据源、事务管理器以及Mapper扫描器,确保能正确地读取和执行SQL。 关于log4j日志文件配置,它是软件开发中的重要一环,用于记录程序运行时的信息,便于调试和问题排查。log4j配置...

    SSH绿色健康购物网.rar

    个人水**有限,如有问题与建议,请指教! (1)个人独立完成,包括mysql数据库设计,后台程序编写,前台美工设计; (2)运用struts1.2 hibernate spring 框架,数据库连接池,事务管理; (3)Struts 应用国际化,Struts 标签...

    银行储蓄 不是很完整,谢谢,多指教

    6. **事务管理**:银行交易涉及资金转账,需要确保原子性、一致性、隔离性和持久性(ACID特性)。JSP应用通常会配合数据库事务控制,确保一次操作的所有步骤要么全部完成,要么全部回滚。 7. **性能优化**:对于高...

    http机械自动化

    “个人技术,请多指教”意味着这是作者的个人实践或学习成果,可能存在一些探索性的尝试或创新,也欢迎他人的建议和指导。 从压缩包文件的名称“zflow”来看,这可能是一个流程控制或工作流相关的项目或模块。在...

    SSH绿色健康购物网

    个人水平有限,如有问题与建议,请指教! (1)个人独立完成,包括mysql数据库设计,后台程序编写,前台美工设计; (2)运用struts1.2+hibernate+spring 框架,数据库连接池,事务管理; (3)Struts 应用国际化,Struts 标签...

    较新较稳定的S2sh包

    2. **Spring**:是Java企业级应用的核心框架,包括依赖注入、AOP、数据访问、事务管理等多种功能,支持与其他框架的集成。 3. **Hibernate**:是一个流行的ORM框架,能够将Java对象映射到数据库表,简化了数据库操作...

Global site tag (gtag.js) - Google Analytics