使用Speedment 3.0.17及更高版本简化交易

交易次数

有时我们想确保我们的数据库操作是原子执行的,并且与其他操作分开。 这是交易起作用的地方。 交易是一组操作

数据库可能接受或不接受作为原子操作的建议。 因此,要么接受交易中的所有操作,要么不接受交易中的所有操作。 事务的另一个优点是,在事务启动时,数据库的状态将在本地“冻结”,因此在事务中我们不会看到其他线程的更新。

Speedment是一个开源的Stream ORM Java工具包和Runtime Java工具,它将现有的数据库及其表包装到Java 8流中。 Speedment的更高版本以易于使用的方式支持数据库事务。

更新

想象一下,我们正在编写一个带有帐户的银行应用程序,然后将100美元从一个帐户(1)转移到另一个(2)。 在这种情况下,重要的是钱不要消失(即从1中扣除,但从未存入2),或者甚至更糟的是,将被复制(即,以2存入但未从1扣除)。 可以使用以下Speedment数据库事务来确保这一点:

txHandler.createAndAccept(tx ->Account sender = accounts.stream().filter(Account.ID.equal(1)).findAny().get();Account receiver = accounts.stream().filter(Account.ID.equal(2)).findAny().get();accounts.update(sender.setBalance(sender.getBalance() - 100));accounts.update(receiver.setBalance(receiver.getBalance() + 100));tx.commit();
}

当方法
调用tx.commit() ,这两个更新将自动提交给数据库,并且对所有其他线程可见。 如果我们没有显式调用tx.commit()则事务将自动回滚(即,更新将不起作用,将被丢弃)。

准备工作

在使用事务之前,我们需要获得一个TransactionHandler如下所示:

BankApplication app = ....TransactionComponent transactionComponent = app.getOrThrow(TransactionComponent.class);TransactionHandler txHandler = transactionComponent.createTransactionHandler();


可以从应用程序中检索AccountManager ,如下所示:

AccountManager accounts = app.getOrThrow(AccountManager.class);

下一步是什么?

在此处阅读有关Speedment交易的更多信息 。

访问GitHub并在此处阅读有关Speedment开源的所有信息。

翻译自: https://www.javacodegeeks.com/2017/11/transactions-made-simple-using-speedment-3-0-17.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像二值化 php im2bw,图像二值化-MATLAB实现

1.图像二值化代码:Aimread(hw1.chips1.GIF); %读取到一张图片%thresh graythresh(A); %自动确定二值化阈值I2 im2bw(A,120/255); %对图像二值化figure();subplot(1,2,1);imshow(A); %显示二值化之前的图片title(原图);subplot(1,2,2);imshow(I2); %显示二值化之后…

Linux操作系统基础

前言 当涉及到计算机操作系统时,Linux 是一个备受关注和广泛使用的开源操作系统。Linux 操作系统以其灵活性、可定制性和强大的性能而闻名,并且在各个领域都有广泛的应用,从服务器和嵌入式设备到个人电脑和移动设备。 本文将介绍 Linux 操作…

php laravel 调试,php – Xdebug laravel artisan命令

我经常使用xdebug来调试应用程序,我已经构建了一个laravel应用程序,它可以上传一个csv,将数据插入到数据库中,并将id输入到作业队列中.我写了一个工匠命令,通过cron运行,然后对这些数据做一些事情.Xdebug适用于通过浏览器访问该站点,但从cli运行时它不会破坏断点.我运行php5-fp…

Spring MVC:高级会话

不久前,我写了一篇关于Spring MVC应用程序中HTTP会话的文章。 那是简单的文章,着重于用法的实际方面。 在文章的最后,我保证会写一些更高级的主题,专门针对Spring MVC应用程序中的会话。 因此,我将发布这些东西。 在开…

php node 目录,node.js基于fs模块对系统文件及目录进行读写操作的方法详解

本文主要介绍了node.js基于fs模块对系统文件及目录进行读写操作的方法,结合实例形式分析了nodejs使用fs模块针对文件与目录的读写、创建、删除等相关操作技巧,需要的朋友可以参考下。如果要用这个模块,首先需要引入,fs已经属于node.js自带的模块&#xf…

Oracle JDBC中的PreparedStatement占位符过多

使用Oracle数据库时,导致ORA-01745(“无效的主机/绑定变量名称错误”)错误的原因有多种。 关于错误ORA-01500到ORA-02098的Oracle 9i文档提供了有关ORA-01745的更多详细信息。 它指出,“原因”是“绑定变量或INTO规范中的冒号后跟…

webview加载php文件,HYWebview下载自定义文件教程

车机版 HYWebview升级到1.3了多增加了一个进度条多增加了自定义下载URL功能使用教程。浏览器打开DNS地址:103.44.248.95可见 底部有一个 下载链接 和 提货密码 可以输入!比如 我们去应用宝官网复制下载链接出来:https://download.sj.qq.com/u…

php-fpm7.0,php-fpm7.0 慢查询设置及说明

环境说明rootubuntu:/home/tb# cat /etc/issue Ubuntu 16.04.2 LTS \n \l rootubuntu:/home/tb# php -v PHP 7.0.15-0ubuntu0.16.04.4 (cli) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache…

设计模式 原型模式_设计模式:原型

设计模式 原型模式创新设计模式之一是原型设计模式 。 尽管原型是创造模式,但它在概念上与其他模式有所区别。 我的意思是原型在某种意义上创造了自己。 我将在下面解释。 原型模式的所有魔力都基于Java Object的clone()方法。 因此&#x…

oracle回滚事务的关键字,Oracle ROLLBACK语句(回滚事务)

Oracle ROLLBACK语句(回滚事务)在Oracle中,ROLLBACK语句可以用来撤销当前事务或有问题的事务。本教程就将教大家如何使用ROLLBACK语句。ROLLBACK语法ROLLBACK [ WORK ] [ TO [SAVEPOINT] savepoint_name | FORCE string ];参数WORK:可选的。 它被Oracle添…

借助Fargate和EKS,AWS甚至可以实现Cloud-ier和Kuberneties-ier

在本周的re:Invent大会上,AWS宣布了很多很棒的事情。 您应该检查一下他们的页面 ,以了解他们正在做的所有新工作的概况–内容很多,而且其中很多似乎立即有用。 如果您想了解更多信息,我的同事凯利安德鲁斯(…

oracle sql文字列函数,Oracle 数据库SQL中 decode()函数简介

decode()函数简介:主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明);使用方法:Select decode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)From talbenameWhere …其中…

oracle sysnonym,Oracle权限

oracle的权限 oracle的权限一、权限概述权限是用户对一项功能的执行权力。在Oracle中,根据系统管理方式不同,将权限分为系统权限与实体权限两类。系统权限是指是否被授权用户可以连接到数据库上,在数据库中可以进行哪些系统操作。而实体权限是…

java 8 lambda_Java 8 Lambda演练

java 8 lambda在工作中,我进行了有关Java 8项目lambda的演示,当然还提供了一些简单的代码来说明一些要点。 Java 8的总体原因是: 更简洁的代码(适用于只有一种方法和集合的类)。 “我们希望代码阅读者在到达lambda表达…

Php的定界符有哪些了,php中定界符

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼PHP中定界符解析定界符写法如下&#xff1a;echo <<这里可以随便放些什么字符&#xff01;HTML; 实现效果&#xff1a;1.PHP定界符的作用就是按照原样&#xff0c;包括换行格式什么的&#xff0c;输出在其内部的东西&#xf…

在JDK 11中启动单文件源代码程序

JEP 330 –启动单文件源代码程序是即将发布的JDK 11&#xff08;18.9&#xff09;发行版中令人兴奋的功能之一。 此功能允许直接使用java解释器执行Java源代码。 源代码在内存中编译&#xff0c;然后由解释器执行。 限制是必须在同一文件中定义所有类。 对于刚开始学习Java并想…

oracle元字符,正则表达式元字符

[more]1、正则表达式中的元字符元字符 意思 例子说明要匹配的字符是一个特殊字符、常量或者后者引用。(后引用重复上一次的匹配) n 匹配换行符匹配( 匹配 () 匹配 )^ 匹配字符串的开头位置 如果A是字符串的第一个字符&#xff0c;^A 匹配 A$ 匹配字符串的末尾位置 如果B是字符串…

Packt和Java Code Geeks提供的$ 5 Java编程书籍!

您好极客&#xff01; 今天&#xff0c;我们为您带来一些激动人心的消息&#xff01; Java Code Geeks和Packt联手为您提供广泛的书籍库每周折扣。 对于开发人员来说&#xff0c;Java仍然是最强大的选择之一&#xff0c;它是定义企业和移动设备的语言。 本周&#xff0c;我们…

oracle12c 端口查看,Oracle12c修改端口号

Oracle12c数据库更改端口号修改端口号的整体步骤1.1、查看当前监听的状态1.2、停止监听1.3、修改监听文件的端口号1.4、修改初始化参数local_listener1.5、重启监听器1.6、修改完毕&#xff0c;使用新端口登录测试实践步骤&#xff1a;1、查看当前监听的状态[oraclelocalhost ~…

源码时代php中级项目,0526PHP班中级项目评比圆满落幕

为了充分发掘同学们开发项目的成功经验&#xff0c;全面提升学员的综合素质&#xff0c;锻炼学员的解说与问题处理能力&#xff0c;源代码教育(源码时代)重庆校区进行了PHP就业班的中级项目评比。项目评比分为演讲、质询、点评及投票评分几个环节&#xff0c;每个环节都精彩纷呈…