Java 使用spring数据进行批插入

Java 使用spring数据进行批插入,java,spring,spring-data,commit,Java,Spring,Spring Data,Commit,我有60K条记录要插入。我想按100个批次提交记录 下面是我的代码 for(int i = 0 ;i < 60000; i++) { entityRepo.save(entity); if(i % 100 == 0) { entityManager.flush(); entityManager.clear(); LOG.info("Committed = " + i); } } entityManager.flush(); entit

我有60K条记录要插入。我想按100个批次提交记录

下面是我的代码

for(int i = 0 ;i < 60000; i++) {
   entityRepo.save(entity);
   if(i % 100 == 0) {
      entityManager.flush();
      entityManager.clear();
      LOG.info("Committed = " + i);
   } 
}
entityManager.flush();
entityManager.clear();
for(int i=0;i<60000;i++){
entityRepo.save(实体);
如果(i%100==0){
entityManager.flush();
entityManager.clear();
LOG.info(“Committed=“+i”);
} 
}
entityManager.flush();
entityManager.clear();

每当我收到日志时,我都会检查数据库,但我没有看到记录被提交。。我缺少什么?

调用
flush()
clear()
是不够的。您需要对
事务的引用
并调用
.commit()
(从)

Session Session=sessionFactory.openSession();
事务tx=会话.beginTransaction();

对于(inti=0;i我假设有两种方法可以实现这一点,一种是定义事务声明性,另一种是从外部方法调用

家长:

 List<Domain> domainList = new ArrayList<>();
 for(int i = 0 ;i < 60000; i++) {
    domainList.add(domain);
    if(i%100 == 0){
    child.saveAll(domainList);
    domainList.clear();
    }
 }
List domainList=new ArrayList();
对于(int i=0;i<60000;i++){
domainList.add(域);
如果(i%100==0){
saveAll(域列表);
domainList.clear();
}
}
儿童:

@Transactional
public void saveAll(List<Domain> domainList) {
}
@Transactional
public void saveAll(列表域列表){
}
这将按父级定义的固定时间间隔调用声明性方法


另一个是手动开始和结束事务并关闭会话。

No.为Spring注入TransactionManager
@Transactional
public void saveAll(List<Domain> domainList) {
}