我是Hibernate框架的新手,我很好奇持久化和更新工作的方式。
目前在我的项目中,当我想要将数据集合持久化或更新到数据库中时,我是通过循环方法逐个完成的。例如,
public persistData(){
List<Person> personList = new ArrayList<>();
for(Person person : personList){
session.persist(person);
}
}
是否可以,例如,
session.persist(personList);
或者无论如何我还可以一次性地持久保存/更新数据集合而无需循环播放?
Editted: 我找到了Hibernate Batch Processing 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个对象需要保留,那么批处理仍然合适吗?
答案 0 :(得分:0)
这里的要点是开始事务,持久化所有,然后提交。尝试不使用@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();