spring hibernate 事务管理 属性 说明
spring提供了以下的事务类型:
1. PROPAGATION_REQUIRED:支持当前正在运行的事务,如果事务不存在则创建新的事务
2. PROPAGATION_REQUIRES_NEW:永远创建新的事务,如果当前存在事务则先挂起该事务的执行。
3. PROPAGATION_SUPPORTS:如果在事务上下文中执行,则支持当前存在的事务,否则不支持事务
4. PROPAGATION_MANDATORY:方法必须参与事务,如果不存在事务,则抛出异常。
5. PROPAGATION_NESTED:困惑
6. PROPAGATION_NOT_SUPPORTED:方法不参与事务,如果在事务上下文中运行,则挂起当前执行的事务
7. PROPAGATION_NEVER:方法在不参与事务,如果在事务上下文中运行,则抛出异常。其中nested方式在ejb中也无对应,项不出应用的场景。事务的隔离级不赘述。
Spring的事务提供了一个readOnly的属性,该属性对事务处理进行了优化,该属性要来处理查询操作。对于增、删、改的操作则不能配置该属性。在使用HibernateTransactionManager时,对readOnly属性,Hibernate Session不做检测,数据不会flush到数据库。Spring提供了HibernateTemplate来管理session的生存期。在这种机制下对增删改必须配置事务属性。