【发布时间】:2014-11-14 04:15:08
【问题描述】:
我有一个 database.xml 来定义 spring 事务,比如
<aop:config proxy-target-class="true">
<aop:advisor advice-ref="txAdvice"
pointcut="execution(* com.compass.utils..*.*(..))" />
</aop:config>
和我的dao,service都在utils包或者子包里 喜欢:
com.compass.utils.db.dao
com.compass.utils.service
如果我的服务类是这样的
public class AlarmService {
@autowired
private AlarmDao alarmDao;
@autowired
private PositionDao positionDao;
@autowired
private AccountDao accountDao;
public void testService(){
alarmDao.save(a);
positionDao.save(b);
accountDao.save(c);
}
}
在调用 testService 时创建了多少事务? 4 个事务?三个事务用于保存调用,一个事务用于 testService?还是只有一个事务?
如果创建了4个事务,如果保存或testService抛出异常,如何回滚? 可能是positionDao.save(b)抛出异常,只是positionDao.save回滚的事务,alarmDao保存完成还是因为testService事务全部保存回滚?
如果我更改 AlarmService 包路径,请使用 com.compass.utils,例如 com.compass.service,对我的问题的交易有什么影响?
当AlarmService在com.compass.service包中,并且我在testService方法中注解@Transactional,对我的问题的事务有什么影响?
@Transactional 可以@Override database.xml 配置吗?
提前感谢您的帮助和建议!
【问题讨论】:
标签: java spring hibernate transactions