Spring的事务,经典配(载)
spring的事务
今天对 spring 的 aop 事务有了一个新的认识,所以赶紧把今天的学习记下来,希望在今后的学习中能够起到一些作用,也能对今天的认识做一次总结。
1.spring 分享
先看一段代码:
connection conn = conn.getconnection(); conn.setautocommit(false); …….. ……... conn.rollback(); conn.commit();
public long addlineitem(long orderid, lineitem lineitem){ log("orderlistdaohibernate.addlineitem : start..."); orderlist orderlist = (orderlist) gethibernatetemplate().load(orderlist.class, orderid); lineitem.setorderlist(orderlist); gethibernatetemplate().saveorupdate(lineitem); gethibernatetemplate().saveorupdate(orderlist); log("orderlistdaohibernate.addlineitem : ending..."); return lineitem.getid(); }
protected session getsession() { if (isalwaysusenewsession()) {return sessionfactoryutils.getnewsession(getsessionfactory(), getentityinterceptor()); } else if (!isallowcreate()) {return sessionfactoryutils.getsession(getsessionfactory(), false); } else {return sessionfactoryutils.getsession( getsessionfactory(), getentityinterceptor(), getjdbcexceptiontranslator()); } }
sessionholder sessionholder = (sessionholder) transactionsynchronizationmanager.getresource(sessionfactory);
connection con = datasourceutils.getconnection(getdatasource());
connectionholder conholder = (connectionholder) transactionsynchronizationmanager.getresource(datasource);
<bean id="sessionfactory" /> </property> <property name="mappingresources"> <list> <value>mf/org/user/user.hbm.xml</value> </list> </property></bean><bean id="transactionmanager" /> </property> </bean><bean id="txproxytemplate" abstract="true" /> </property> <property name="transactionattributes"> <props><prop key="save*">propagation_required,-exception</prop><prop key="remove*">propagation_required,-exception </prop><prop key="update*">propagation_required,-exception </prop><prop key="incress*">propagation_required,-exception </prop><prop key="*">propagation_required,readonly</prop> </props> </property> </bean><bean id="usermanager" parent="txproxytemplate"> <property name="target" ref="usermanagertarget" /></bean><bean id="usermanagertarget"ref="userdao" /></bean><bean id="userdao" ref="sessionfactory" /></bean>
<bean id="transactionmanager" /> </property></bean>
<bean id="txproxytemplate" abstract="true" /> </property> <property name="transactionattributes"> <props><prop key="save*">propagation_required,-exception</prop><prop key="remove*">propagation_required,-exception </prop><prop key="update*">propagation_required,-exception </prop><prop key="incress*">propagation_required,-exception </prop><prop key="*">propagation_required,readonly</prop> </props> </property></bean>
<prop key="save*">propagation_required,-exception</prop><prop key="remove*">propagation_required,-exception </prop><prop key="update*">propagation_required,-exception </prop><prop key="incress*">propagation_required,-exception </prop><prop key="*">propagation_required,readonly</prop>
<bean id="usermanager" parent="txproxytemplate"> <property name="target" ref="usermanagertarget" /></bean><bean id="usermanagertarget"ref="userdao" /></bean><bean id="userdao" ref="sessionfactory" /></bean> 当然我们也可以写成:<bean id="usermanager" parent="txproxytemplate"> <property name="target"> <bean ref="sessionfactory" /></bean>