har*_*ari 12 spring hibernate transactions
我使用以下声明式Spring事务:
<!-- Declare a transaction manager-->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" p:sessionFactory-ref="sessionFactory" />  
<!-- enable the configuration of transactional behavior based on annotations -->
    <tx:annotation-driven transaction-manager="transactionManager" mode="proxy" proxy-target-class="true"/>
这是DAO:
@Repository
@Transactional(readOnly = true, propagation=Propagation.REQUIRES_NEW )
@Scope("prototype")
public class Xdao{
    public Object getValues(){
        .....
    }
}
@Service
@Scope("prototype")
public class Xservice{
private Xdao xdao;
    public Object getx(){
        xdao.getValues();//here I want to know whether the transaction started  is             
        //committed or rollback by aop. Is it possible somehow? I don't want to include that code 
        //in any service or dao layer. 
        .........
    }
    @Autowired
    public void setXdao(Xdao xdao){
        this.xdao=xdao;
    }
}
我想了解事务状态,即事务已提交或回滚.我需要它来记录.
Jos*_*tin 20
如果交易是在范围上,你可以得到TransactionStatus从TransactionAspectSupport.currentTransactionStatus().例如:
if (TransactionSynchronizationManager.isActualTransactionActive()) {
   TransactionStatus status = TransactionAspectSupport.currentTransactionStatus();
   ...
}
但这在交易完成后无效.
您可以添加TransactionSynchronization和实现afterCompletion(int status)以记录状态或将其存储在ThreadLocal变量中以供以后使用.
public class LogTransactionSynchronization extends TransactionSynchronizationAdapter {
   @Override
   public afterCompletion(int status) {
      // log the status or store it for later usage
   }
}
小智 5
将以下内容添加到 log4j.properties 将启用事务状态日志记录,
log4j.logger.org.hibernate.transaction=DEBUG,R
log4j.logger.org.springframework.transaction=DEBUG,R
| 归档时间: | 
 | 
| 查看次数: | 18370 次 | 
| 最近记录: |