Bee的批量插入与事务使用

2024-01-04 20:44
文章标签 使用 批量 插入 事务 bee

本文主要是介绍Bee的批量插入与事务使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 * Bee 在2.2之前,调用批量插入在每个批都会提交commit,但在2.2改为只调用一次且在事务中,在批量插入的方法内容不再提交,而由事务控制.  
 * 
 * 2.2之前,批量插入使用每一个批次提交一次事务;
 * 这样,当违反主键约束等就忽略的大批量插入效率是很高的;
 * 但当事务中有批量插入时,不了解内部执行规则可能会对业务的正确性造成影响.
 * 所在Bee在2.2时,默认是所有批次的插入操作只提交一次,如插入100条,每批20条,2.2之前是提交了五次commit,在2.2时改为一次commit;
 * 若想在大批量插入时忽略违反约束的失败操作,使用回2.2之前的模式,可以使用配置:bee.osql.eachBatchCommit=true
 * 
 * 在2.2之前,可以将insertBatchSize设置得足够大,将所有记录在一个批次完成,即不会造成多个批次;这样,在事务中,就不会因事务分多批造成事务不准确;
 * 但因2.2之前在批处理时,会调用conn.commit();提交了事务,所以用业务逻辑调用rollback()是无效的.
 * 2.2时,使用事务时,在批处理内部不会再调用conn.commit().

package org.teasoft.exam.bee.osql.tran;import java.util.ArrayList;
import java.util.List;import org.teasoft.bee.osql.BeeException;
import org.teasoft.bee.osql.api.SuidRich;
import org.teasoft.bee.osql.transaction.Transaction;
import org.teasoft.honey.osql.core.HoneyConfig;
import org.teasoft.honey.osql.core.Logger;
import org.teasoft.honey.osql.core.SessionFactory;
import org.teasoft.honey.osql.shortcut.BF;//不捕获异常+批处理
public class TranTest2 {public static void main(String[] args) {HoneyConfig.getHoneyConfig().notCatchModifyDuplicateException=true;Transaction transaction = SessionFactory.getTransaction();SuidRich suidRich = BF.getSuidRich();try {transaction.begin();Org org1=new Org();org1.setOrgName("aaa");Org org2=new Org();org2.setOrgName("bbb");Org org3=new Org();org3.setOrgName("aa0"); //这个会重复,检查aaa,bbb是否能插入List<Org> list=new ArrayList<>();list.add(org1);list.add(org2);list.add(org3);int a=suidRich.insert(list, 2);  //分多批执行时,前面的批在内部会先提交
//			int a=suidRich.insert(list, 100); // 确保放在一批,可以避免每个批提交一次; 2.2之前,批量插入在方法内还是会提交;System.out.println("------------------: "+a);if(a!=list.size()) {System.out.println("业务规则触发事务回滚");transaction.rollback();}else {transaction.commit();}//批量插入时,一批就会有一个commint;} catch (BeeException e) {Logger.error("In TransactionExam (BeeException):" + e.getMessage());transaction.rollback();e.printStackTrace();} catch (Exception e) {Logger.error("In TransactionExam (Exception):" + e.getMessage());transaction.rollback();e.printStackTrace();}}}

通过实体创建表和约束

public static void main(String[] args) {Ddl.createTable(Org.class,true); //创建表,并覆盖Ddl.unique(Org.class, "orgName"); //创建唯一约束}

Java ORM 工具Bee,一个简单易用又功能强大的ORM;

天下大势,分久必合!
Hibernate/MyBatis+ plus +Sharding JDBC + Jpa+ Spring data+ GraphQL+ App ORM (Android, 鸿蒙)= Bee

Spring Cloud 微服务使用数据库更方便:Bee + Spring Boot; 轻松支持多数据源,Sharding, Mongodb.

要整合一堆的工具,还不如只用一个小巧又功能强大的工具。

https://gitee.com/automvc/bee

bee: Bee,互联网新时代的Java ORM框架,支持Sharding;JDBC,Android,HarmonyOS;支持多种关系型数据库,还支持NoSQL的Cassandra,Mongodb等;更快、更简单、更自动,开发速度快,运行快,更智能!

这篇关于Bee的批量插入与事务使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/570538

相关文章

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

Python实现AVIF图片与其他图片格式间的批量转换

《Python实现AVIF图片与其他图片格式间的批量转换》这篇文章主要为大家详细介绍了如何使用Pillow库实现AVIF与其他格式的相互转换,即将AVIF转换为常见的格式,比如JPG或PNG,需要的小... 目录环境配置1.将单个 AVIF 图片转换为 JPG 和 PNG2.批量转换目录下所有 AVIF 图

Pydantic中Optional 和Union类型的使用

《Pydantic中Optional和Union类型的使用》本文主要介绍了Pydantic中Optional和Union类型的使用,这两者在处理可选字段和多类型字段时尤为重要,文中通过示例代码介绍的... 目录简介Optional 类型Union 类型Optional 和 Union 的组合总结简介Pyd

Vue3使用router,params传参为空问题

《Vue3使用router,params传参为空问题》:本文主要介绍Vue3使用router,params传参为空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录vue3使用China编程router,params传参为空1.使用query方式传参2.使用 Histo

详解如何通过Python批量转换图片为PDF

《详解如何通过Python批量转换图片为PDF》:本文主要介绍如何基于Python+Tkinter开发的图片批量转PDF工具,可以支持批量添加图片,拖拽等操作,感兴趣的小伙伴可以参考一下... 目录1. 概述2. 功能亮点2.1 主要功能2.2 界面设计3. 使用指南3.1 运行环境3.2 使用步骤4. 核

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建