jpa 批量插入

@Override
@Transactional
public <S extends E> List<S> save(Iterable<S> entities) {
List<S> result = new ArrayList<>();
 if (entities == null) {
return result;
 }
Iterator<S> iterator = entities.iterator();
 int i = 0;
 int count = 0;
 //遍历循环 每20个(可以做成配置中读取) insert 批量插入一次库
 while (iterator.hasNext()) {
S entity = iterator.next();
 	entityManager.persist(entity);
 	result.add(entity);
	 i++;
 if (i % 20 == 0) {
entityManager.flush();
 	 entityManager.clear();
 count=0;
 }else {
count++;
 }
}
//判断 是否有剩余未flush的 最后flush
 if (count>0){
entityManager.flush();
 entityManager.clear();
 }
return result;
}

https://github.com/Alexey-/spring-boot-batch/blob/master/src/main/resources/application.properties

时间: 2024-10-19 08:52:13

jpa 批量插入的相关文章

Spring data jpa批量插入和更新

http://blog.csdn.net/wangshfa/article/details/27323297 1 public interface BatchDao<T> { 2     public void batchInsert(List<T> list); 3       4     public void batchUpdate(List<T> list); 5 } 1 public interface ReceiptDao extends PagingAnd

JPA中以HibernatePersistence为provider的批量插入问题

为什么要批量插入 要插入10000条数据,如果不批量插入的话,那么我们执行的sql语句将是10000条insert insert into member (group_id, user_id, role, extend) values (101, 100, 3, NULL)insert into member (group_id, user_id, role, extend) values (101, 101, 3, NULL)insert into member (group_id, user

mysql使用存储过程&amp;函数实现批量插入

写这边文章的目的,是想结合mysql 存储过程+函数完成一个批量删除的功能吧...正好也好加深下对procedure和function的熟练操作吧...废话不多说,我就直接上表结构啦哈,如下: create table dept( id int unsigned primary key auto_increment, deptno mediumint unsigned not null default 0, dname varchar(20) not null default "",

spring JdbcTemplate批量插入以及单个插入时获取id

1. 批量更新插入 jdbcTemplate.batchUpdate(String sql, List<Object[]> batchArgs) Object[]数组的长度为每条记录的参数个数(也就是sql语句中"?"的个数) List: 总共插入多少条记录. /** * 批量插入订单详情 * */ public void addBatch(List<OrderDetail> orderDetails) { List<Object[]> params

向mysql中批量插入数据的性能分析

MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下   CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 50 ) NOT NULL,value VARCHAR( 50 ) NOT NULL,other_value VARCHAR( 50 ) NOT NULL) 通常情况下单条插入的sql语句我们会这么写: 代码如下   INSERT INTO example(example_id, name, valu

SQL表值参数批量插入

--使用表值参数向另一数据表中批量插入数据 USE DF17DataPro--创建并使用表值参数步骤/*1.创建表类型并定义表结构.有关如何创建 SQL Server 类型的信息,请参阅用户定义表类型.有关如何定义表结构的详细信息,请参阅 CREATE TABLE (Transact-SQL).2.声明具有表类型参数的例程.有关 SQL Server 例程的详细信息,请参阅 CREATE PROCEDURE (Transact-SQL) 和 CREATE FUNCTION (Transact-S

数据批量插入MSSQL

MSSQL数据批量插入优化详细 序言 现在有一个需求是将10w条数据插入到MSSQL数据库中,表结构如下,你会怎么做,你感觉插入10W条数据插入到MSSQL如下的表中需要多久呢? 或者你的批量数据是如何插入的呢?我今天就此问题做个探讨. 压测mvc的http接口看下数据 首先说下这里只是做个参照,来理解插入数据库的性能状况,与开篇的需求无半毛钱关系. mvc接口代码如下: public bool Add(CustomerFeedbackEntity m) { using (var conn=Co

用python操作mysql数据库(之批量插入数据)

#!/usr/bin/env python # -*- coding: utf-8 -*- import MySQLdb #建立连接 conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='1qaz#EDC',db='test_db') cur = conn.cursor() #对数据进行操作 li = [('tanzhenx','shaoguan'),('huangmengdie','shaoguan')] #定义一个列表,列表中

SQL Server 批量插入数据的两种方法(转)

在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Insert不仅效率低,而且会导致SQL一系统性能问题.下面介绍SQL Server支持的两种批量数据插入方法:Bulk和表值参数(Table-Valued Parameters). 运行下面的脚本,建立测试数据库和表值参数. [c-sharp] view plaincopy --Create DataBase create database BulkTestDB; go use BulkTes