• 攻城狮在路上(壹) Hibernate(十六)--- Hibernate声明数据库事务


    一、数据库事务的概念
      数据库的ACID特征:Atomic、Consistency、Isolation、Durability。原子性、一致性、隔离性、持久性。不同的隔离级别引发的不同问题。
      事务的ACID特征是由数据库管理系统来实现的。
      数据库管理系统通过锁机制来实现事务的隔离性。
    二、声明事务边界的方式
      1、声明事务包含以下内容
        A、事务的开始边界(BEGIN):
        B、事务的正常结束边界(COMMIT):提交事务。
        C、事务的异常结束边界(ROLLBACK):撤销事务。
      2、声明事务有以下方式
        A、直接通过JDBC API来声明JDBC事务。
        B、直接通过Hibernate API来声明JDBC事务。
        C、直接通过Hibernate API来声明JTA事务。
        D、直接通过JTA API来声明JTA事务。

    三、Java应用通过JDBC API来声明JDBC事务
      Connetion类提供的控制事务的方法:
        setAutoCommit(boolean autoCommit):
        commit():提交事务。
        rollback():撤销事务。
    四、Java应用通过Hibernate API声明JDBC事务
      在Hibernate API中,通过Session和Transaction接口声明事务边界:

    Transaction tx = session.beginTransaction();
    tx.commit();
    tx.rollback();

    五、Java应用通过Hibernate API声明JTA事务:暂不了解。
      JTA事务主要运行在受管理环境中。
      1、特点
        A、一般由底层JTA实现来提供和管理数据库连接池。
        B、数据库连接池与JNDI绑定,应用程序可通过JNDI API来访问数据库连接池。
        C、在处理复杂的大事务方面,由JTA实现提供的数据库连接池更加健壮可靠,性能优越。
        D、通过JTA API来声明JTA事务时,支持分布式事务。
        E、JTA事务在运行时并不会产生额外的系统开销。
      2、声明步骤
        A、在配置文件中配置相关属性即可:

    #指定数据库连接池的JNDI
    hibernate.connection.datasource=java:comp/env/jdbc/SAMPLEDB
    #指定事务工厂
    hibernate.transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
    hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JbossTransactionManagerLookup

        B、通过Hibernate API声明即可,方式和JDBC类似。

    六、Java应用通过JTA API声明JTA事务:暂不了解。

  • 相关阅读:
    个人博客开发之blogapi项目统一结果集api封装
    个人博客开发之blogapi 项目整合JWT实现token登录认证
    C语言I博客作业06
    C语言l博客作业03
    C语言I博客作业04
    C语言I博客作业05
    C语言I博客作业01
    C语言I博客作业07
    C语言I博客作业02
    UVA 11427 Expect the Expected [概率]
  • 原文地址:https://www.cnblogs.com/tq03/p/3788754.html
Copyright © 2020-2023  润新知