我们有 被所有管理者继承的基础通用管理。基地 经理用 @Transactional注释注释。多个事务经理@Transactional注解
有2组的事务 服务:
x.y.service1.*
- 必须由transactionManager1
x.y.service2.*
管理 - 必须由transactionManager2
如何管理交易可以配置没有nessesity覆盖所有事务性方法并指定事务管理器?
@Transactional(readOnly = true)
public abstract class GenericManagerImpl<D extends IGenericDao, T extends BaseObject, PK extends Serializable>
implements IGenericManager<T, PK> {
protected D dao;
@Autowired
public void setDao(D dao) {
this.dao = dao;
}
@Transactional(readOnly = false)
public void save(T object) {
dao.save(object);
}
@Transactional(readOnly = false)
public void remove(T object) {
dao.remove(object);
}
}
@Service
class UserManagerImpl
extends GenericManagerImpl<IUserDao, User, Long>
implements IUserManager {
// Everything is OK. User is managed by txManager1
}
@Service
class BillingManagerImpl
extends GenericManagerImpl<IBillingDao, Billing, Long>
implements IBillingManager {
@Override
@Transactional(readOnly = false, value="txManager2") // <--have to override method only to specify txManager
public void save(final Billing billing) {
super.save(billing);
}
@Override
@Transactional(readOnly = false, value="txManager2") // <--have to override method only to specify txManager
public void remove(final Billing billing) {
super.remove(billing);
}
}
最有可能我需要AOP与@Transactional注释结合起来。
实际上,我想要的是:
1)能够使用@Transactional注释配置事务(只读标志,传播,隔离等)。
2)确定战略选择我的类(使用AOP之外的事务管理器,例如)
xyservice1 * - >使用txManager1
xyservice2 * - >使用txManager2
是否有可能?
我只读和不只读基本管理器中的方法。 我有两个选择在这里: 1)具有一流水平的注解@Transactional(唯读= TRUE)和方法级注解@Transactional(唯读= FALSE)为每一个不只读方式 2)具有一流水平的注解@Transactional( readOnly = false)和方法级别注释@Transactional(readOnly = true)为每个只读方法 在任何情况下,我将需要覆盖方法级别@transactional注释的服务必须由txManager2 – Seyran 2010-07-26 10:35:38