学习
实践
活动
工具
TVP
写文章

java事务使用_Java跨库事务

即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。 Java有几种类型的事务Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。 9).处理异常并回滚事务 10).释放JDBC连接 JDBC优缺点:1.冗长、重复 2.显示事务控制 3.每个步骤不可获取 4.显示处理受检查异常 JDBC为使用Java进行数据库的事务操作提供了最基本的支持 e、Xid接口:为事务标识符的Java映射 注:前3个接口位于Java EE版的类库 javaee.jar 中,Java SE中没有提供! 3)、Java持久化API事务(JPA) Hibernate多年来一直是事实上的Java持久化标准,但是现在Java持久化API作为真正的Java持久化标准进入大家的视野。 如果你计划使用JPA的话,那你需要使用Spring的JpaTransactionManager来处理事务

8830

java事务_Java 事务详解

一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 二、Hibernate事务处理 (1)Hibernate事务处理 在Hibernate框架中,使用Transaction接口来维护了事务实现(JTA,JDBC)的抽象。 (2)Hibernate事务绑定 Hibernate使用本地线程绑定事务(所以不能在一个线程中启动多个线程去操作不同的数据工作),当请求Service方法时打开通过Soring AOP 自动打开 Hibernate (1)JTA 在应用系统数据量越来越大时,系统数据就需要分布在不同的数据库中,当业务需求在多个数据库中做原子性操作时就可以选择JTA (Java Transaction API),JTA事务比JDBC事务更强大 有很多的JTA框架,这里使用的是atomikos框架,具体代码请点击链接查看 四、分布式消息最终一致性事务 (1)最终一致性 当应用系统数据越来越庞大,最终数据的一致性成为了一个很好的解决方案,即能即时响应

5920
  • 广告
    关闭

    热门业务场景教学

    个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java 事务嵌套_Java事务以及嵌套事务

    最近遇到事务的处理,嵌套事务,自己研究,整理一下。 1 先看结论 1、在Java事务中,事务的嵌套,如果有事务成功,那么则都成功,否则都不会成功。 3 预设场景 这里直接测试spring boot 使用spring data jpa添加一个用户进行测试 实体类user @Data @Entity public class User { @Id SpringJUnit4ClassRunner.class) @SpringBootTest public class UserServiceTest { @Autowired UserService userService; } 4 实际场景使用 结论:并行事务不存在事务影响 4.2 场景:嵌套相同事务 a) 事务嵌套,在同一个事务中,没有对异常进行处理 @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest 结论:如果事务存在异常,并进行捕获处理,不会影响事务

    8910

    java事务回滚案例_java事务控制

    下面总结一下经验教训: Spring事务的管理操作方法 编程式的事务管理 实际应用中很少使用 通过使用TransactionTemplate 手动管理事务 声明式的事务管理 开发中推荐使用( 2. try…catch异常 在一段业务逻辑中对数据库异常进行了处理,使用了try…catch子句捕获异常并throw了一个自定义异常,这种情况导致了事务未回滚,示例代码如下: @Transactional 当Spring FrameWork 的事务框架捕获到一个异常的时候,会去匹配配置的回滚规则来决定是否标记回滚事务使用匹配度最强的规则结果。 programmatically TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } } 如果可能的话,强烈推荐您使用声明式事务方式回滚事务 ,对于编程式事务,如果你强烈需要它,也是可以使用的,but its usage flies in the face of achieving a clean POJO-based architecture

    8210

    Java 事务注解(注解式事务)

    spring中的@Transactional(rollbackFor = Exception.class)事务处理,当你的方法中抛出异常时,它会将 事务回滚,数据库中的数据将不会改变,也就是回到进入此方法前的状态 rollbackFor=Exception.class) 2 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class) 3 不需要事务管理的

    23030

    Java+Oracle实现事务——JDBC事务

    https://blog.csdn.net/huyuyang6688/article/details/46675171        J2EE支持JDBC事务、JTA事务和容器事务事务,这里说一下如何实现 JDBC事务。         看一个例子: import java.sql.*; public class TransactionTest{ public static void main(String[] args) throws ();        4、如果发生异常,回滚事务:              conn.rollback();        从上面看,JDBC事务使用较为方便,但由于它是由Connection对象所控制的 ,所以它的缺点是事务的范围只局限于一个数据库的连接,同一个事务中无法操作多个数据库。

    93420

    java-mybaits-009-mybatis-spring-使用,SqlSessionFactoryBean、事务

    如果使用 了 Spring 的事务,那么当事务完成时,session 将会提交或回滚。最终,任何异常都会被翻 译成 Spring 的 DataAccessException 异常。 在 Java 中, 相同的代码是: SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean(); SqlSessionFactory 在事务处理期间,一个单独的 SqlSession 对象将会被创建 和使用。当事务完成时,这个 session 会以合适的方式提交或回滚。 Spring 会自动 使用任意存在的容器事务,在上面附加一个 SqlSession。如果没有开始事务,或者需要基 于事务配置,Spring 会开启一个新的容器管理事务。 但是当使用 MyBatis-Spring 时, bean 将会使用 Spring 管理的 SqlSession 或映射器来注入。 那就是说 Spring 通常是处理 事务的。

    9620

    Java事务管理

    ; I(隔离性)保证事务不受外部并发操作影响的独立环境执行; D(持久性)事务完成之后,对于数据的修改是永久的,即使系统出现故障也能够保持; 一、Java事务管理 Java事务管理有三种类型 (); } } JDBC事务的优点: 接口较为简单,性能较好 缺点: 不支持多数据库的事务 1.2 JTA事务 Java事务API(Java Transaction API,简称JTA) Java rollback:回滚一个事务 setRollBackOnly:把当前事务标记为回滚 setTransactionTimeout:设置事务的时间,超过这个时间,就抛出异常,回滚事务 另外,不是使用了UserTransaction (PS:主流的数据库都支持XA规范) 想要使用JTA事务,就需要一个实现了javax.sql.XADataSource、javax.sql.XAConnection、javax.sql.XAResource )的区别在于:XA可以参与JTA事务,而且不支持自动提交 下面是一个依赖于J2EE容器的,使用JTA事务的转账操作(需要通过JNDI方式获取UserTransaction与DataSource) public

    7340

    SpringBoot使用事务

    事务是很多项目中需要注意的东西,有些场景如果没有加事务控制就会导致一些脏数据进入数据库,本文简单介绍SpringBoot怎样使用事务。 本文使用的是之前整合JPA的文章,具体可以参考 传送门。 无论是配置还是pom文件等等,没有任何改变,改变的是测试的controller上面的两个方法,其中一个方法使用了@Transactional注解来进行事务控制。 houseRepository.save(new House("house10", "100平方米")); return "success"; } } test1方法没有加入事务 ,test2方法加入了事务注解。 通常来讲,我们需要的只是成功的话都插入,失败的话都回滚,这时我们调用http://localhost:8888/test2,在次查看数据库,还是之前的三条数据,SpringBoot使用事务建当整合到这里就完成了

    33830

    Java事务总结详解

    3.Java事务的类型 Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。 2.JTA(Java Transaction API)事务 JTA是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器可以使用JTA来访问事务使用EJB CMT的另外一个好处就是程序员无需关心JTA API的编码,不过,理论上我们必须使用EJB. 三种Java事务差异? 1、JDBC事务控制的局限性在一个数据库连接内,但是其使用简单。 2、JTA事务的功能强大,事务可以跨越多个数据库或多个DAO,使用也比较复杂。 3、容器事务,主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用使用。 一般说来,在单个JDBC 连接连接的情况下可以选择JDBC事务,在跨多个连接或者数据库情况下,需要选择使用JTA事务,如果用到了EJB,则可以考虑使用EJB容器事务

    2K10

    如何使用事务

    使用事务有两种方式,分别为 显式事务 和 隐式事务 。 显式事务  步骤1  START TRANSACTION 或者 BEGIN ,作用是显式开启一个事务。 :         显式的的使用 START TRANSACTION 或者 BEGIN 语句开启一个事务。 mysql数据库中的表 事务控制或关于锁定的语句 ① 当我们在一个事务还没提交或者回滚时就又使用 START TRANSACTION 或者 BEGIN 语句开启了 另一个事务时,会 隐式的提交 加载数据的语句 关于MySQL复制的一些语句 其它的一些语句 使用举例1:提交与回滚 我们看下在 MySQL 的默认状态下,下面这个事务最后的处理结果是什么。 ,使用 ROLLBACK 对事务进行回滚。

    8820

    Java分布式事务

    延申拓展: 事务隔离性(面试): 脏读:事务A修改了一个数据,但未提交,事务B读到了事务A未提交的更新结果,如果事务A提交失败,事务B读到的就是脏数据。 2.4 本地消息表(异步确保) 本地消息表这种实现方式应该是业界使用最多的,其核心思想是将分布式事务拆分成本地事务进行处理,这种思路是来源于ebay。 延申拓展: MQ非事务消息实现: 方案一:创建独立消息服务 方案二:使用事务MQ(RabbitMQ/Kafka)的ACK机制 2.6 Seata 2.6.1 Seata简介 2019 年 1 月,阿里巴巴中间件团队发起了开源项目 Fescar 的愿景是让分布式事务使用像本地事务使用一样,简单和高效,并逐步解决开发者们遇到的分布式事务方面的所有难题。 2.6.5 TCC模式 seata也针对TCC做了适配兼容,支持TCC事务方案,原理前面已经介绍过,基本思路就是使用侵入业务上的补偿及事务管理器的协调来达到全局事务的一起提交及回滚。

    12820

    精通Java事务编程(1)-深入理解事务

    十年来,事务一直是简化这些问题的首选机制。事务将应用程序的多个读、写操作组合成一个逻辑单元。即事务中的读、写操作是个执行的整体:整个事务要么成功(提交),要么失败(中止或回滚)。 并非所有应用都需要事务,有时可弱化事务处理或完全放弃事务(如为获得更高性能或更高可用性)。一些安全相关属性也可能会避免引入事务。 如何判断是否需要事务? 虽然实际上它们可能同时运行,但DB系统要确保当事务提交时,其结果与串行执行完全相同。 然而实践中,由于性能问题,很少使用串行化的隔离。 原子性可以通过使用日志来实现崩溃恢复(B+树),并对每个对象加锁实现隔离 。 某DB也提供高级原子操作 4,如自增,这就不再需要像图-1那样执行读取 - 修改 - 写回。 ↩︎ 严格地说,原子自增(atomic increment) 这个术语在多线程编程的意义上使用了原子这个词。

    10830

    推荐学java——Spring事务

    事务的出现也是为了很好的解决现实生活中的问题。 Spring 事务管理器 使用 Spring 的事务管理器,管理不同数据库访问技术的事务处理。 使用 Transactional 注解添加事务 使用步骤: 在Spring配置文件中声明事务的内容(声明事务管理器,指定使用的哪个事务管理器对象;声明使用哪个注解管理事务,开启事务注解驱动) 在类的源代码中加入 使用 AspectJ 框架声明事务控制 这是另一种方式使用Spring的事务使用 AspectJ 的 AOP 声明事务控制叫做声明式事务使用步骤如下: 在pom.xml中加入 spring-aspects依赖; 在 spring 的配置文件中声明事务的内容(声明事务管理器,业务方法需要的事务属性,声明切入点表达式) 下面就通过这种方式来做测试事务使用 ,java.lang.IndexOutOfBoundsException"/> <!

    12030

    MySQL 事务--Java免费学习

    在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务 事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行 事务用来管理insert,update,delete 语句 一般来说,事务是必须满足4个条件(ACID):Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性) 1、事务的原子性:一组事务 2、稳定性 :有非法数据(外键约束之类),事务撤回。 3、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。 在Mysql控制台使用事务来操作 1,开始一个事务 start transaction 2, 做保存点 save point 保存点名称 3, 操作 4,可以回滚,可以提交,没有问题,就提交,有问题就回滚 PHP中使用事务实例 <?

    17020

    Spring使用注解声明事务

    在上一篇中我们已经简单的介绍了用xml的方式声明事务,spring中除了上述方式外,还可以直接使用注解的方式管理事务,也就是通过@Transactional注解对需要的事务进行事务管理的。 下面我们使用测试用例来演示@Transactional注解的具体使用。 ? 因为@Transactional注解有默认的事务属性,所以只需要添加上述注解即可完成对事务的管理。 但有一个问题我们要注意,就是虽然上述注解有默认事务功能,但是我们知道,事务的注解底层是通过AOP的方式实现事务管理的,所以我们还需要的配置spring中的xml,使之让spring支持对@Transactional 事务传播行为--:PROPAGATION_REQUIRED 事务隔离级别--:ISOLATION_DEFAULT 读写事务属性--:读/写事务 超时时间--:依赖底层的事务属性默认值 回滚设置--:运行期异常回滚 如果一个类已经使用了@Transactional注解,这时spring就会将这个类中所有的public方法上都添加事务管理,如果我们此时又在public方法上添加的方法级别的@Transactional

    37730

    SQL Server 事务使用

    这时候事务就派上大用场了。 定义 事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作系列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。 同时,并行事务的修改必须与其他并行事务的修改相互独立。 持久性(Durability):事务完成之后,它对于系统的影响是永久的,真是修改了数据库。 语法 BEGIN TRAN:开始事务,设置事务的起始点。 COMMIT TRAN:提交事务,使事务成为数据库中永久的、不可逆转的一部分。 ROLLBACK TRAN:回滚事务,放弃事务中对数据库所做的修改。 SAVE TRAN:设置事务的保存点。 ; END 事务可以设置在程序的代码中,也可以写在数据库的脚本中,下面是一个事务和存储过程结合使用的例子 ALTER PROCEDURE [dbo].

    7710

    java分布式事务框架_Java分布式事务,及解决方案

    1、什么是分布式事务 分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 3.3、隔离性(I) 所谓的隔离性就是说,事务事务之间不会互相影响,一个事务的中间状态不会被其他事务感知。 4.2、在线下单 买家在电商平台下单,往往会涉及到两个动作,一个是扣库存,第二个是更新订单状态,库存和订单一般属于不同的数据库,需要使用分布式事务保证数据一致性。 XA实现分布式事务的原理如下: 总的来说,XA协议比较简单,而且一旦商业数据库实现了XA协议,使用分布式事务的成本也比较低。 5.2、消息事务+最终一致性 所谓的消息事务就是基于消息中间件的两阶段提交,本质上是对消息中间件的一种特殊利用,它是将本地事务和发消息放在了一个分布式事务里,保证要么本地操作成功成功并且对外发消息成功,

    11740

    Spring 事务使用详解

    本文首发于个人公众号 Java 技术大杂烩,欢迎关注 前言 什么是事务?根据 维基百科事务 介绍,数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。 Spring 事务使用 Spring 进行开发过程中,一般都会使用 Spring 来进行事务的控制,接下来就来看下 Spring 使用事务的详细过程,包括事务的传播方式等。 Spring 事务支持两种方式,编程式事务和声明式事务,下面的栗子会使用声明式事务来举例,即使用 @Transactional 注解的方式. public void test1() throws RuntimeException { 10 User user = new User("xiaoqi", 20, 1, 1000, "java ,而这恰恰可以符合事务使用情况,在目标方法执行成功后,提交事务,失败的时候,回滚事务

    44160

    扫码关注腾讯云开发者

    领取腾讯云代金券