施普灵河事务隔离和事务传播的详细解释与比较

施普灵河事务隔离和事务传播的详细解释与比较

春天是SSH的管理员,负责管理其他框架和协调各方面的工作。今天,学习春天的业务管理。Spring的事务管理分为陈述性知识和程序设计风格。声明在Spring的配置文件相关的配置;规划是写在注释的方式到代码。

在Spring的配置文件中配置的交易都是由三部分组成,即数据源,事务管理器代理机制。这三部分一般变化的代理机制。两部分数据源和TransactionManager只改变根据数据访问的方法。例如,当访问数据源数据与冬眠,实际上是SessionFactory和TransactionManager是HibernateTransactionManager。

弹簧的事务隔离级别



isolation_default:使用数据库的默认隔离级别。
isolation_read_uncommitted:允许读取未提交的数据的变化,这可能导致脏读、不可重复读和幻想。
isolation_read承诺:允许并发事务读取提交后可以避免脏读,这可能会导致重复和幻像读。
isolation_repeatable_read:多结果读取相同的场可以导致幻觉。
isolation_serializable:完全符合酸的原则,以确保没有脏读,反复阅读和幻想不发生。




隔离级别可以根据系统本身的要求根据系统的要求进行调整,因为隔离涉及到将数据库中的记录锁定,并且数据越严格,并发性能就越差。

弹簧的交易行为



Spring事务的传播行为是指当一个方法调用另一个方法时事务应该如何操作。
propagation_mandatory:这种方法必须在事务中运行。一个例外是如果当前事务不被存在。
propagation_nested:如果交易是存在的,该方法运行在一个嵌套事务。嵌套事务的提交和回滚可以单独从当前事务。如果目前没有交易,一个新的事务的开始。这种沟通各厂家的支持是不均匀的,这时应注意使用它。
propagation_never:当前的方法不应该运行在一个单一的交易。如果交易存在,则抛出一个异常。
propagation_not_supported:当前的方法不应该运行在一个单一的交易。如果一个事务正在运行,它将被挂起的操作方法,在。
propagation_required:这种方法必须在事务中运行,如果一个事务运行的方法,将运行在这个交易。否则,开始一个新的业务。
propagation_requires_new:这种方法必须运行在其自己的事务,它将启动一个新事务。如果现有的正在运行的事务,它将把这种方法的操作过程中。
propagation_supports:当前方法不需要事务处理环境,但如果交易已经运行,这个方法也可以运行在这个交易。


上面是Spring事务隔离和事务分发的一个示例。如有任何疑问,请留言或与当地社区交换意见。谢谢你的阅读。We hope to help you. 感谢您对本站的支持。