Spring 中自带的事务管理
Spring 集成 hibernate 的事务管理,不用我们手动开启和提交事务了:
需要在xml文件头部的 xsi:schemaLocation 添加:
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
hibernate 配置文件中可设的配置:
hibernate.current_session_context_class=org.springframework.orm.hibernate3.SpringSessionContext
此为默认值,可不设
aop 的设置:
<bean id="transaction_manager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"> </property> </bean> <tx:advice id="muser_txAdvice" transaction-manager="transaction_manager"> <tx:attributes> <tx:method name="*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <bean id="muser_inter" class="org.aops.MuserAdvice"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <aop:config> <aop:pointcut expression="execution(* org.services.impl.MuserServiceImpl.login(String, String))" id="login_pointCut" /> <aop:advisor advice-ref="muser_inter" pointcut-ref="login_pointCut" /> <aop:advisor advice-ref="muser_txAdvice" pointcut-ref="login_pointCut" /> </aop:config>
java 中的代码:
package org.aops; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.hibernate.SessionFactory; public class MuserAdvice implements MethodInterceptor { private SessionFactory sessionFactory; @Override public Object invoke(MethodInvocation arg0) throws Throwable { System.out.println("in"); Object obj = arg0.proceed(); System.out.println("out"); return obj; } public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } }
控制台的输出:
in
Hibernate:
select
muser0_.MUID as MUID1_,
muser0_.MUNAME as MUNAME1_,
muser0_.MUPWD as MUPWD1_
from
TEST.MUSER muser0_
where
muser0_.MUNAME=?
and muser0_.MUPWD=?
out
相关推荐
zbcaicai 2020-03-28
数据库工具开发 2012-09-25
LeeLuffy 2020-10-16
打不死的小强 2020-07-03
zbcaicai 2020-06-21
花落花开春去秋来 2020-06-20
loviezhang 2020-06-16
林大鹏 2020-06-10
feinifi 2020-11-12
jakefei 2020-07-19
云之飞踢 2020-07-08
lpfvip00 2020-06-25
msmysql 2020-06-21
wenjieyatou 2020-06-09
middleware0 2020-06-09
CharlesYooSky 2020-06-06
pengpengflyjhp 2020-05-14
debugjoker 2020-04-10
zhangll00 2020-05-11