返回顶部
首页 > 资讯 > 精选 >JPA如何批量保存saveAll
  • 797
分享到

JPA如何批量保存saveAll

2023-06-19 12:06:47 797人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关JPA如何批量保存saveAll,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用了JPA的saveAll方法批量保存一千多条数据的问题,但是发现日志打印却是一条一条的inse

这篇文章将为大家详细讲解有关JPA如何批量保存saveAll,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

使用了JPA的saveAll方法批量保存一千多条数据的问题,但是发现日志打印却是一条一条的insert语句。

JPA如何批量保存saveAll

查看saveAll的源码,发现里面是使用了一个for循环然后一条条的执行save方法....

JPA如何批量保存saveAll

好吧,手动写一个批量执行的方法

@Componentpublic class DbUtils {    private static EntityManager entityManager;    public static final int BATCH_SIZE = 1000;    public static EntityManager getEntityManager() {        if (entityManager == null) {            entityManager = springUtils.getBean(EntityManager.class);        }        return entityManager;    }    public static void setEntityManager(EntityManager entityManager) {        //DbUtils.entityManager = entityManager;    }    public static void batchExecute(String sql, List<Object[]> params, Integer batchSize){        if (batchSize == null) {            batchSize = BATCH_SIZE;        }        if(params.size() == 0){            return;        }        Connection conn = null;        Session session = null;        PreparedStatement stmt = null;        try {            session = (Session) getEntityManager().getDelegate();            SessionFactoryImpl sf = (SessionFactoryImpl)session.getSessionFactory();            conn = sf.getJdbcServices().getBootstrapJdbcConnectionAccess().obtainConnection();            stmt = conn.prepareStatement(sql);            conn.setAutoCommit(false);            int index = 0;            for (Object[] objects : params) {                for(int i=0 ; i<objects.length ; i++){                    stmt.setObject(i+1, objects[i]);                }                stmt.addBatch();                index++;                if (index % batchSize == 0){                    stmt.executeBatch();                    stmt.clearBatch();                }            }            if (index % batchSize != 0){                stmt.executeBatch();                stmt.clearBatch();            }            conn.commit();        }catch (Exception e){            throw new RuntimeException(e.getMessage());        }finally {            try {                stmt.close();                conn.close();            }catch (SQLException e){                throw new RuntimeException(e.getMessage());            }        }    }}

关于“JPA如何批量保存saveAll”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: JPA如何批量保存saveAll

本文链接: https://lsjlt.com/news/295986.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JPA如何批量保存saveAll
    这篇文章将为大家详细讲解有关JPA如何批量保存saveAll,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。使用了JPA的saveAll方法批量保存一千多条数据的问题,但是发现日志打印却是一条一条的inse...
    99+
    2023-06-19
  • jpa如何批量保存数据
    使用JPA批量保存数据可以使用以下方法:1. 使用EntityManager的`persist()`方法:通过循环将实体对象逐个保存...
    99+
    2023-09-07
    jpa
  • 解决spring data jpa saveAll() 保存过慢问题
    目录spring data jpa saveAll() 保存过慢问题发现解决方案1 此方案在第二天失效了以上方案有问题,下面附上彻底解决的截图和记录JPA的saveAll方法执行效率...
    99+
    2024-04-02
  • ThinkPHP6模型批量保存SaveAll()方法,亲测可用,超详细代码
     日常难题记录:tp6 中的saveAll()的使用方法 控制器代码: $Lay =new OddlayModel; $res=$Lay->saveAll(input('post.'));//使用函数助手input('post...
    99+
    2023-09-05
    前端 开发语言 php 后端 测试工具
  • 解决spring data jpa 批量保存更新的问题
    spring data jpa 批量保存更新问题 使用jpa批量保存时,看日志发现是一条一条打印的,然后去看了下源码,果然是循环调用的单个保存(巨坑啊) 经查询jpa是可以实现批量...
    99+
    2024-04-02
  • JPA多线程保存失效如何解决
    在JPA多线程保存失效的情况下,可以尝试以下几种解决方案:1. 使用数据库事务:将保存操作放在一个数据库事务中,确保多线程保存的原子...
    99+
    2023-09-07
    JPA
  • python如何将图片批量保存至word文档中
    目录将图片批量保存至word文档中将本地图片存储到word文档解决的方法总结将图片批量保存至word文档中 def picture_docx(path_picture,path_do...
    99+
    2023-02-01
    python图片 图片批量保存 图片保存至word文档
  • python如何批量读取.mat文件并保存成.npy
    目录python批量读取.mat文件并保存成.npypython读取.mat文件时出现错误解决总结python批量读取.mat文件并保存成.npy import numpy as n...
    99+
    2022-12-14
    python批量读取mat文件 读取mat文件保存成npy python读取mat文件
  • 利用Python批量保存51CTO博客
    一、背景 最近在整理博客,近在51CTO官网存在文章,想将之前写的全部保存到本地,发现用markdown写的可以导出,富文本的则不行,就想利用Python批量保存自己的博客到本地。 二、代码 git地址 #!/bin/env python ...
    99+
    2023-01-31
    批量 博客 Python
  • Mybatis-PlussaveBatch()批量保存失效的解决
    目录问题问题环境排查过程解决方案问题 在使用IService.savebatch方法批量插入数据时,观察控制台打印的Sql发现并没有像预想的一样,而是以逐条方式进行插入,插1000条...
    99+
    2023-01-13
    Mybatis-Plus saveBatch()批量保存 Mybatis-Plus saveBatch()
  • Python怎么实现批量文件分类保存
    今天小编给大家分享一下Python怎么实现批量文件分类保存的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。我们这里以这两百多个...
    99+
    2023-06-30
  • tensorflow如何保存变量到文件
    在TensorFlow中,可以使用tf.train.Saver()来保存变量到文件中。以下是一个保存变量的示例代码: import ...
    99+
    2024-04-03
    tensorflow
  • 基于Python实现批量保存视频到本地
    目录序言开始代码获取视频的代码自动评论自动点赞自动关注序言 是我太久没发了吗?昨天没人看,那么今天来点特别的~ 不仅把好看的视频全部pa下来,咱们还要实现自动评论、点赞、关注三连~ ...
    99+
    2024-04-02
  • 如何使用批处理实现网吧保存区
    小编给大家分享一下如何使用批处理实现网吧保存区,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!代码如下:@echo off color 0a cls set 路径=...
    99+
    2023-06-08
  • shell如何把stderr输出保存到变量
    小编给大家分享一下shell如何把stderr输出保存到变量,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!把stderr输出保存...
    99+
    2024-04-02
  • 如何修改TensorFlow保存数量的限制
    本篇文章为大家展示了如何修改TensorFlow保存数量的限制,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。设置如下: saver  = tf.train.S...
    99+
    2023-06-06
  • Python实现批量文件分类保存的示例代码
    目录序言代码展示效果展示序言 当我们电脑里面的文本或者或者文件夹太多了,有时候想找到自己想要的文件,只能通过去搜索文件名,要是名字忘记了的话,那你也搜不了吧,当然你可通过后缀名去搜索...
    99+
    2024-04-02
  • Springboot实现Excel批量导入数据并保存到本地
    目录前言成果展示了解Excel表格基本属性表设计引入依赖 工具类ControllerentityMapperUserService测试总结前言 当我们给数据库中的表中添加数...
    99+
    2024-04-02
  • Mybatis-Plus实现多主键批量保存及更新详情
    目录一、依赖二、启动类注解三、表结构四、配置文件五、代码1、实体类2、持久层3、服务层4、逻辑层六、测试一、依赖 <dependency> ...
    99+
    2024-04-02
  • 如何批量修改MySQL存储引擎类型
    下文主要给大家带来如何批量修改MySQL存储引擎类型,希望这些内容能够带给大家实际用处,这也是我编辑如何批量修改MySQL存储引擎类型这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。查看表使用的存储...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作