Hibernate 事务传播和隔离属性
来源:互联网 发布:淘宝搭配套餐怎么设置 编辑:程序博客网 时间:2024/04/29 20:53
事务传播属性:
事务传播行为可以由事务属性propagation指定,Spring定义了7种传播行为,这些行为在org.springframework.transaction.TransactionDefinition接口中定义。
REQUIRED:如果现有的事务正在进行,当前方法应该在这个事务中运行,否则,它应该启动新事务,并在自己的事务中运行。
REQUIRES_NEW:当前方法必须启动新事物,并在自己的事务中运行,如果现有的事务正在进行,它应该挂起。
SUPPORTS:如果现有事务正在进行,当前方法应该运行在该事务中,否则,它没有必要运行在事务中。
NOT_SUPPORTED:当前方法不应该运行在事务中。如果现有事务正在运行,它应该挂起。
MANDATORY:当前方法必须运行于一个事务中,如果没有事务在进行中,将抛出一个异常。
NEVER:当前方法不应该运行于事务中,如果现有事务在运行中,将抛出异常。
NESTED:如果现有事务正在运行,当前方法应该运行在嵌套的事务中,否则它应该启动一个新事务并运行在自己的事务中,这种功能是Spring特有的。该行为对于批处理等情况有用,在这种情况下,你需要处理很长的处理过程,而你希望在批处理中每次提交大量的记录,所以你每隔10000个记录提交一次,如果出现某种错误,你回滚嵌套的事务,仅仅丢失10000条记录。
隔离事务属性:
当相同应用或不同应用的多个事务同时在同一数据集上操作时,可能发生许多不可预期的问题。你必须指定事务互相隔离的预期方式。
理论上,事务应该完全互相隔离。但是,这种隔离级别对性能有很大的影响,因为事务必须顺序运行。事实上,事务可以运行于较低的隔离级别,以便改进性能。
事务的隔离级别可以由isolation事务属性指定。Spring支持5中隔离级别。
DEFAULT:使用底层数据库的默认隔离级别。对于大部分数据库,默认隔离级别是READ_COMMITTED;
READ_UNCOMMITTED:允许事务读取其他事务的未提交修改。可能发生读脏数据、不可重复读和幻读问题;
READ_COMMITTED:仅允许事务读取其他事务已提交的修改。能避免读脏数据问题,但是不可重复读和幻读问题仍然可能发生。
REPEATABLE_READ:确保事务能够多次从一个字段读到相同值。在本事务期间,其他事务的更新被禁止。能避免读脏数据和不可重复读问题,但是幻读问题仍然可能发生。
SERIALIZABLE:确保一个事务能从表中多次读取相同的行。在事务期间,其他事务做出的对表的插入、更新和删除将被禁止。能避免所有并发性问题,但是性能很很低。
- Hibernate 事务传播和隔离属性
- spring 事务隔离级别和传播属性
- spring事务传播属性和隔离级别
- 事务的传播属性和隔离级别
- Spring事务传播属性和隔离级别
- spring事务传播属性和隔离级别
- Spring事务传播属性和隔离级别
- spring事务传播属性和隔离级别
- spring事务传播属性和隔离级别
- spring事务传播属性和隔离级别
- spring事务传播属性和隔离级别
- spring事务传播属性和隔离级别
- Spring事务传播属性和隔离级别
- spring事务传播属性和隔离级别
- Hibernate事务隔离级别和事务传播特性
- Hibernate事务隔离级别和事务传播特性
- spring里面事务的传播属性和事务隔离级别
- spring里面事务的传播属性和事务隔离级别
- DAY12------面向对象 小结 2 Object类 代码块构造私有化 抽象类 接口 枚举类
- 415A Mashmokh and Lights
- 静态链表的表示和实现
- SPI
- android SlidingDrawer伸缩折叠布局组件
- Hibernate 事务传播和隔离属性
- Let us learn C in Code <9> pseudocode
- vim 搜索
- HDOJ-4217 Data Structure
- Linux学习笔记之——ssh连接虚拟机中的ubuntu12.0.4
- Android View绘制过程
- 黑马程序员_java高新技术_JDK1.5新特性
- awdwadwg
- 用例图(2)