Spring3 @Transaction
来源:互联网 发布:java线程超时关闭 编辑:程序博客网 时间:2024/06/05 18:33
由于在dao用的是:session 而不是 hibernate Template
所以session中没有事务()
这就需要自己手工的配置事务,事务是配置在service层
所以在配置文件appluicationContext中:
<beanid="tx" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<propertyname="sessionFactory"ref="sessionFactory"></property>
</bean>
<!--声明 使用事务为 注解的方式!!! -->
<tx:annotation-driventransaction-manager="tx" /
声明采用注解的方式声明事务!
由于写了一个baseServiceImpl的基类
所以各个service都继承与baseServiceImpl
在baseServiceImpl中
@Transactional
public class BaseServiceImpl<T ,Eextends IBaseDao<T>> implements IBaseService<T, E> {
在EmployeeServiceImpl中
@Service
public class EmployeeServiceImpl extendsBaseServiceImpl<Employee, IEmployeeDao> implements IEmployeeService {
由此可见只在baseServiceImp有l@Transactional
(案例说 在每个service中都应该添加@Transactiona)
这是为什么?
因为:annotation是可以继承的,所以必须而且一定要在基类中添加@Transactional
倘若只在service中添加@Transactional
而基类中不添加
(即
public class BaseServiceImpl<T ,Eextends IBaseDao<T>> implements IBaseService<T, E> {
在EmployeeServiceImpl中
@Service
@Transactional
public class EmployeeServiceImpl extendsBaseServiceImpl<Employee, IEmployeeDao> implements IEmployeeService {
)
会有下面的异常
org.hibernate.HibernateException:No Hibernate Session bound to thread, and configuration does not allow creationof non-transactional one her
这是因为子类service会调用父类的方法,而父类中的方法并没有@Transactional
所以会出现异常!!!
<!-- 自动扫描与装配bean --><context:component-scan base-package="cn.sdu.erp"></context:component-scan><!-- 由于在配置数据源的时候 使用的是${} 所以需要引入配置文件 --><context:property-placeholder location="classpath:jdbc.properties" /><!-- 配置session工厂 --><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="configLocation" value="classpath:hibernate.cfg.xml"></property><property name="dataSource"><!-- 配置数据源连接池信息 --><bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource"><property name="user" value="${jdbc.user}" /><property name="password" value="${jdbc.password}" /><property name="driver" value="${jdbc.driver}" /><property name="driverUrl" value="${jdbc.driverUrl}" /></bean></property></bean><!-- 配置事务管理器 --><bean id="tx" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"></property></bean><!-- 声明 使用事务为 注解的方式!!! --><tx:annotation-driven transaction-manager="tx" /></beans>
- Spring3 @Transaction
- MyBatis3整合Spring3的Transaction事务处理
- MyBatis3整合Spring3的Transaction事务处理
- MyBatis3整合Spring3的Transaction事务处理
- Transaction
- Transaction
- Transaction
- transaction
- Transaction
- Transaction
- Transaction
- Transaction
- @Transaction
- transaction
- Transaction
- spring3
- spring3
- Spring3
- 写论文 找文献资料 你还在用网页搜索吗?你OUT了(转自:http://emuch.net/html/201203/4144738.html)
- JFreeChart的使用
- 第十五周实验报告 任务二
- MeasureSpec介绍及使用详解
- 一些代码优化的方法
- Spring3 @Transaction
- poj1014 - Dividing
- php 递归 实现无限分类 格式化数组
- 新建网站方式
- --利用Linux恢复数据的方法
- Hibernate关联关系配置(一对多、一对一和多对多)
- MyEclipse 9.1优化技巧
- 黑马程序员_单例模式
- 学术搜索引擎大全(转自:http://scienceroom.net/scholar-search-engines)