PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY--该方法只能在一个已经存在的事务中执行,业务方法不能发起自己的事务。如果在没有事务的环境下被调用,容器抛出例外。
PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
同时也可以配置事务的隔离级别:
<property name="transactionAttributes">
<props>
<prop key="insert*">
PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED</prop>
<prop key="tran*">
PROPAGATION_REQUIRED, ISOLATION_SERIALIZABLE</prop>
<prop key="deposit*">
PROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED</prop>
</props>
</property>
ReadOnly
事务属性中的readOnly标志表示对应的事务应该被最优化为只读事务。
这是一个最优化提示。在一些情况下,一些事务策略能够起到显著的最优化效果,例如在使用Object/Relational映射工具(如:Hibernate或TopLink)时避免dirty checking(试图“刷新”)。
也可以把事务设置成只读事务,达到最大的事务优化:
<prop key="get*">
PROPAGATION_SUPPORT, readOnly</prop>
Timeout
在事务属性中还有定义“timeout”值的选项,指定事务超时为几秒。在JTA中,这将被简单地传递到J2EE服务器的事务协调程序,并据此得到相应的解释。
分享到:
相关推荐
4. **Transaction Management**:分析Spring的事务管理机制,包括编程式和声明式事务,理解事务的传播行为和隔离级别。 5. **Spring的事件驱动模型**:了解Spring如何通过ApplicationEvent和ApplicationListener...
web端可能有多个,放到service中可以共用properties 是写在哪里的 src main的resource里面如何配置 开发模式和发布模式的 maven配置mybatis的事务是如何配置的事务的传播途径 7中 和事务的隔离级别2018-6-12研究日志...
14. Spring的事务管理:包括编程式事务管理和声明式事务管理,涉及事务的隔离级别、传播行为等。 15. Hibernate的延迟加载:只有在需要时才会加载关联的对象,以提高性能。 16. AOP(面向切面编程):Spring中的...
理解如何正确设置事务的隔离级别、回滚规则和传播行为对于确保数据一致性至关重要。 最后,日志和异常处理也是MyBatis使用过程中不可忽视的部分。MyBatis集成了多种日志框架,如Log4j、Logback等,帮助开发者调试和...
在数据管理方面,系统需具备病种数据库,存储各类传染病的相关信息,包括病症描述、预防措施、传播途径等。同时,用户互动功能如问答、评论、分享也是必不可少的,以促进公众参与和信息交流。此外,结合微信API,...