最新公告
  • 欢迎您光临极客文库,登录获取更多编程学习资源及文章!立即加入我们
  • Spring事务管理简介

    什么是事务

    事务是正确执行一系列的操作(或动作),使得数据库从一种装填转换成另一种状态,且保证操作全部成功,或者全部失效。

    事务原则是什么

    事务必须俯冲ISO/IEC所制定的ACID原则

    ACID原则的具体内容如下:

    原子性(Atomicity):即不可分割性,事务要么全部被执行,要么就全部不执行。

    一致性(Consiitency):事务的执行使得数据库从一种正确状态转换成另一种正确状态。

    隔离性(Isolation):在事务正确提交之前,它可能的结果不应显示给任何其他事务。

    持久性(Durability):事务正确提交后,其结果将永久保存在数据库中。

    Java事务

    Java事务的产生

    程序操作数据库的需要,以java编写的程序或系统,实现ACID的操作。

    Java事务实现

    通过JDBC相应方法间接来实现对数据库的增、删、改、查,吧事务转移到Java程序代码中进行控制

    确保事务要么全部执行成功,要么撤销不执行。

    [v_notice]总结:java事务机制和原理就是操作确保数据库操作的ACID特性。[/v_notice]

    Java事务实现模式

    Java事务的实现

    通过Java代码来实现对数据库的事务性操作。

    Java事务类型

    JDBC事务:用Connection对象控制的手动模式和自动模式

    JTA(Java Transacation API)事务:与实现无关,与协议无关的API

    容器事务:应用服务器提供的,且大多是基于JTA完成(通常基于JNDI的,相当复杂的API实现)

    三种事务的差异

    JDBC事务:控制的局限性在一个数据库连接内,但是其使用简单。

    JTA事务:功能强大,课跨越多个数据库或多DAO,使用比较复杂。

    容器事务:主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用使用。

    Spring事务核心接口

    Spring事务管理器

    JDBC事务管理器(DataSource Transaction Manager)

    本事务管理器通过调用java.sql.Connection来管理事务

    Hibernate事务管理器(Hibernate Transaction Manager)

    本管理器将事务管理的职责委托给org.hibernate.Transaction对象来管理事务,而后者是从Hibernate Session中取到的。

    JPA事务管理器(Jpa Transaction Manager)

    通过一个JPA实体管理工厂,(javax.persistence.EntityManagerFactory接口的任意实现)将与由工厂所产生的JPA EntityManager合作来构建事务。

    JTA事务管理器(Jta Transaction Manager)

    本管理器将事务管理的责任委托给javax.transaction.UserTransaction和javax.transaction.TransactionManager对象进行事务处理。

    Spring事务属性

    数据读取类型说明

    脏读:事务没提交,提前读取。

    不可重复读:两次读取的数据不一致。

    幻读:事务不是独立执行时发生的一种非预期现象。

    事务隔离级别

    隔离级别定义了一个事务可能受到其他并发事务影响的程度。

    隔离级别分为:

    事务传播行为

    当事务方法被另一个事务方法调用时,必须指定事务应该如何传播

    Spring的七种传播行为

    事务是否只读

    利用数据库事务的“只读”属性,进行特定优化处理。

    设置“只读”注意:事务的是否“只读”属性,不同的数据库厂商支持不同。

    oracle的“readOnly”不起作用,不影响其增删改查

    MySQL的“readOnly”为true,只能查,增删改则出异常

    事务超时

    事务超时就是事务的一个定时器,在特定时间内事务如果没有执行完毕,那么就会自动回滚,而不是一直等待其结束。

    设计事务时注意:为了使应用程序很好的运行,事务不能运行太长的时间。因为事务可能涉及对后端数据库的锁定,所以长时间的事务会不必要的占用数据库资源。

    事务回滚

    默认情况下,事务只有遇到运行期异常时才会回滚,而在遇到检查异常时不会回滚。

    自定义回滚策略:

    – 声明事务在遇到特定的检查型异常时像遇到运行期异常那样回滚

    – 声明事务遇到特定的异常不回滚,即使这些异常时运行期异常。

    Spring事务状态

    事务接口

    – 通过事务管理器获取TransactionStatus实例

    – 控制事务在回滚或提交的时候需要应用对应的事务状态

    – Spring事务接口

    本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
    极客文库 » Spring事务管理简介

    常见问题FAQ

    如果资源链接失效了怎么办?
    本站用户分享的所有资源都有自动备份机制,如果资源链接失效,请联系本站客服QQ:2580505920更新资源地址。
    如果用户分享的资源与描述不符怎么办?
    可以联系客服QQ:2580505920,如果要求合理可以安排退款或者退赞助积分。
    如何分享个人资源获取赞助积分或其他奖励?
    本站用户可以分享自己的资源,但是必须保证资源没有侵权行为。点击个人中心,根据操作填写并上传即可。资源所获收益完全归属上传者,每周可申请提现一次。
    如果您发现了本资源有侵权行为怎么办?
    及时联系客服QQ:2580505920,核实予以删除。

    参与讨论

    • 108会员总数(位)
    • 3700资源总数(个)
    • 5本周发布(个)
    • 2 今日发布(个)
    • 202稳定运行(天)

    欢迎加入「极客文库」,成为原创作者从这里开始!

    立即加入 了解更多
    成为赞助用户享有更多特权立即升级