JPAでデータをまとめて保存する方法
JPAで一括してデータを保存する方法:
- 永続化
EntityManager entityManager = ...;
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
for (Entity entity : entityList) {
entityManager.persist(entity);
}
transaction.commit();
- フラッシュ()
EntityManager entityManager = ...;
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
for (Entity entity : entityList) {
entityManager.persist(entity);
entityManager.flush(); // 每次保存后立即刷新到数据库
}
transaction.commit();
- createQuery(NativeQuery)
EntityManager entityManager = ...;
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
Query query = entityManager.createNativeQuery("INSERT INTO table_name (column1, column2) VALUES (?, ?)");
for (Entity entity : entityList) {
query.setParameter(1, entity.getColumn1());
query.setParameter(2, entity.getColumn2());
query.addBatch(); // 添加到批处理中
}
query.executeBatch(); // 执行批处理
transaction.commit();
バッチ操作を行う場合、データベースのパフォーマンスへ影響が出る可能性があるので、パフォーマンスやリソースの消費量を考慮して、使用は慎重に行う必要があります。