1、设置applicationContext.xml中的XML的命名空间
<?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:aop=" http://www.springframework.org/schema/aop"
xmlns:tx=" http://www.springframework.org/schema/tx"
xmlns:context=" http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
2、声明一个事务管理器
applicationContext.xml:
<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sf2"></property>
</bean>
3、在注解中,使用事务管理器
<tx:annotation-driven transaction-manager="txManager"/>
4、设置current_session_context_class
在hibernate.cfg.xml中,设置
<property name="current_session_context_class">
org.springframework.orm.hibernate4.SpringSessionContext
</property>
5、session从当前线程中拿
session=sf.getCurrentSession();
不可以使用Opensession()
6、在公有的接口或者方法上注解事务
@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.READ_COMMITTED)
可以设置隔离级别、传播行为、可读、超时、回滚或者不回滚的异常类