我是 Hibernate 框架的新手,我对持久化和更新的工作方式很好奇。
目前在我的项目中,当我想将数据集合保留或更新到数据库中时,我正在通过循环方法一一执行。例如,
public persistData(){
List<Person> personList = new ArrayList<>();
for(Person person : personList){
session.persist(person);
}
}
是否可以,例如,
session.persist(personList);
或者还有其他方法可以立即保留/更新数据集合而不循环?
编辑: 我发现 Hibernate 批处理在 How to insert multiple rows into database using hibernate? 和 Best way to insert a good amount of records in hibernate
我正在开发用于使用 hibernate 保存/更新/删除数据的通用类,我应该提供该方法
public void (List<T> addedItemList)
或
public void (T addedItem)
据我了解,批量持久化应该是在大量交易的情况下完成的,对吗?如果有时候只有1、2个对象需要持久化,那么批处理还合适吗?
最佳答案
这里的要点是开始事务,持久化所有内容,然后提交。尝试不要使用 @Transaction,因为您正在使用代码执行此操作。
EntityManager em = entityManagerProvider.get();
// em.clear();//remove this if caching is necessary
em.getTransaction().begin();
for(buildings b:buildingsArray) {
em.persist(b);
}
em.getTransaction().commit();
关于java - 使用 hibernate 将数据集合持久保存/更新到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36833027/