`
yangjb
  • 浏览: 33223 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jdbc和jta方式事务管理的区别

阅读更多
hibernate的两种事务管理jdbc 和jta方式。下边说说两者的区别
一、说明一下jdbc和jta方式事务管理的区别:
JDBC事务由Connnection管理,也就是说,事务管理实际上是在JDBC Connection
中实现。事务周期限于Connection的生命周期之内

JTA 事务管理则由 JTA 容器实现,JTA 容器对当前加入事务的众多Connection 进
行调度,实现其事务性要求。JTA的事务周期可横跨多个JDBC Connection生命周期。

二、在了解jdbc和jta事务的基础上,再来讨论hibernate的两种事务
对于基于JDBC Transaction的Hibernate 事务管理机制而言,事务管理在Session 所依托的JDBC Connection
中实现,事务周期限于Session的生命周期。

对于基于JTA事务的Hibernate而言,JTA事务横跨可横跨多个Session。
三、hibernate中写法的不同

jdbc的写法

Java代码 
1.public void saveUser(){  
2.    Session session = sessionFactory.openSession();  
3.    Transaction tx = session.beginTransaction();  
4.    session.save(user);  
5.    tx.commit();  
6.    session.close();  
7.} 
public void saveUser(){
    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
    session.save(user);
    tx.commit();
    session.close();
}必须在session.close()之前commit或者rollback

jta写法

Java代码 
1.public void saveUser(){  
2.    Session session = sessionFactory.openSession();  
3.    Transaction tx = session.beginTransaction();  
4.      
5.    session.save(user);  
6.    session.close();  
7.      
8.    Session session1 = sessionFactory.openSession();  
9.    session1.save(user1);  
10.    session.close();  
11.      
12.    tx.commit();  
13.} 
public void saveUser(){
    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
   
    session.save(user);
    session.close();
   
    Session session1 = sessionFactory.openSession();
    session1.save(user1);
    session.close();
   
    tx.commit();
}commit和rollback可以在session.close()之后执行.
同时应该注意的一点是,事务是不能嵌套的,在使用jta的事务的情况下,如果要让一个事务跨越两个
session,则必须在两个session的外层开始事务和完成事务。而不能再在session内部开始事务和完成事务。
分享到:
评论

相关推荐

    JDBC事务 JTA事务 传播特性 隔离级别

    **JTA事务**则适用于分布式环境,可以跨越多个数据源管理事务。JTA通过`UserTransaction`接口提供事务控制,支持两阶段提交(2PC)协议。在2PC中,事务处理监视器(TPM)先询问所有资源管理器(如数据库)是否准备好...

    JDBC事务和JTA(XA)事务

    JTA事务的优点是可以管理分布式事务,确保分布式事务的一致性和可靠性,但是,它的系统开销相对较大,因此,应当慎重考虑是否确实需要分布式事务。 JDBC事务和JTA(XA)事务都是数据库事务管理机制,每种机制都有其...

    JDBC-JTA.rar_jdbc_jta_jta JDBC

    对应的`.class`文件(如`myJDBCUpdateServlet`、`myJTAServlet`、`myJDBCReadServlet`)是这些Servlet的编译后版本,它们可能包含了具体的JDBC数据库操作和JTA事务管理的代码。`www.pudn.com.txt`可能是一个文档,...

    Java中JDBC事务与JTA分布式事务总结与区别

    JTA事务通常与JNDI(Java Naming and Directory Interface)和XAResource接口一起工作,使得应用程序可以透明地访问和管理分布式事务。使用JTA事务时,开发者不再直接控制Connection的事务,而是由事务管理器(如...

    springboot整合JTA组件,多数据源事务管理

    XA协议是数据库层面的一套分布式事务管理的规范,JTA是XA协议在Java中的实现,多个数据库或是消息厂商实现JTA接口,开发人员只需要调用SpringJTA接口即可实现JTA事务管理功能。 JTA事务比JDBC事务更强大。一个JTA事务...

    在Spring中使用JTA事务管理

    本文将详细介绍如何在Spring中使用JTA事务管理,包括通过集成JOTM(Java Open Transaction Manager)以及引用Tomcat的JTA事务。 ### 1. 通过集成JOTM,直接在Spring中使用JTA事务 #### 1.1. 添加JOTM类库到类路径...

    spring + JTA + JOTM实现分布式事务

    对于分布式事务,Spring支持JTA事务管理,并且可以无缝集成JOTM。 1. **配置JOTM**:首先,你需要在项目的类路径下添加JOTM的依赖库。然后,在Spring的配置文件中定义JOTM的事务管理器 bean,例如: ```xml ...

    JTA事务源码示例

    -- JTA事务管理器 --> class="org.springframework.transaction.jta.JtaTransactionManager"> <!-- 数据源A --> <bean id="dataSourceA" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" ...

    Spring+iBatis+JOTM实现JTA事务

    通过这样的配置和测试,我们可以验证Spring+iBatis+JOTM的JTA事务管理功能是否正常工作。这种方式特别适用于需要在非J2EE容器中实现分布式事务的场景,为应用提供了强大的事务管理能力。然而,需要注意的是,JTA事务...

    使用JTA实现跨库事务

    在提供的"SimpleDemo"示例中,可能包含了一个简单的JTA事务管理的例子,比如如何在Java代码中启动和结束一个事务,以及如何在事务中操作数据库。具体实现细节可能包括使用JPA、JDBC或其他持久化框架与JTA集成的方法...

    JTA 分布式事务 XAPool 1.5和1.6的所有jar包,源码包

    同时,还需要考虑与JTA事务管理器(如Atomikos、Bitronix等)的集成,以实现完整的分布式事务处理。 总结来说,XAPool是JTA分布式事务处理的重要组件,提供了一种高效的数据库连接池解决方案,对于构建大规模、高...

    java事务管理和事务分类

    对于JDBC和JTA事务,开发者需要显式地调用`commit()`或`rollback()`来控制事务的结束。而在容器事务中,事务的控制权交给了容器,开发者只需在业务逻辑代码中编写无事务感知的代码,容器会在适当的时候处理事务的...

    JDBC事务处理机制探秘

    在J2EE环境中,容器管理的事务(如SessionBean中的JTA事务)能够提供更高的可伸缩性和可靠性。在实际应用中,根据需求选择合适的事务处理机制是至关重要的,以确保系统的稳定性和数据的完整性。

    跨数据库的事务管理配置jta

    在提供的XML配置示例中,我们可以看到Spring框架是如何配置两个不同的数据源,并为它们设置JTA事务管理器的。 ##### 数据源配置 首先,我们来看数据源的配置部分: ```xml ...

    Spring3.1+Hibernate4.1+Atomikos3.9+MySql5.1+Tomcat5/6/7实现JTA事务管理

    标题中的“Spring3.1+Hibernate4.1+Atomikos3.9+MySql5.1+Tomcat5/6/7实现JTA事务管理”揭示了一个集成开发环境,用于构建分布式、事务一致性的Java应用程序。这个组合利用了Spring框架的依赖注入和AOP(面向切面...

    maven springboot jta mybatis 分布式事物

    在本项目中,JTA 被用来管理跨多个数据源的事务,确保数据的一致性和完整性。Spring Boot 支持 JTA,可以通过其集成的 `Atomikos` 或 `Bitronix` 事务管理器实现分布式事务。 `MyBatis` 是一个优秀的持久层框架,它...

    Jta的jar包

    Java Transaction API是Java平台企业版(Java EE)的一部分,它提供了一种标准的方式来管理应用程序中的事务。JTA允许应用程序在分布式环境中执行事务操作,确保数据的一致性和完整性。它定义了应用程序、事务管理器...

    springboot+jta+atomikos

    本项目“springboot+jta+atomikos”旨在利用Spring Boot框架、Java Transaction API (JTA) 和 Atomikos 这一开源事务管理器来实现分布式事务的统一管理。下面将详细阐述这三个关键组件以及它们如何协同工作。 **...

    java实现JTA简单例子

    `TestXa.java` 文件很可能是用来实现JTA事务管理的核心代码。在Java中,实现JTA通常涉及以下几个关键组件: 1. **Transaction Manager(事务管理器)**:它是JTA的核心,负责创建、管理和协调事务。Java EE容器如...

    jta.jar包;jta.jar包

    6. **JTA与JDBC/Java Persistence API (JPA)**: 在JDBC连接上启用JTA事务,需要使用`javax.sql.DataSource.getConnection(UserTransaction, ConnectionProperties)`方法,或者在JPA中通过`@Transactional`注解声明...

Global site tag (gtag.js) - Google Analytics