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

posted @ 2014-06-14 21:55  于辰  阅读(281)  评论(0编辑  收藏  举报