• 攻城狮在路上(壹) 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事务:暂不了解。

  • 相关阅读:
    supervisor管理airflow
    airflow迁移
    flume部署
    canal原理&部署
    EMR日常操作
    linux的route
    autossh
    Velocity(5)——#macro 指令
    Git(1)----Eclipse安装Git插件
    Velocity(4)——引入指令和#Parse 指令
  • 原文地址:https://www.cnblogs.com/tq03/p/3788754.html
Copyright © 2020-2023  润新知