Java 使用hibernate将数据收集持久化/更新到数据库中

Java 使用hibernate将数据收集持久化/更新到数据库中,java,hibernate,jpa,Java,Hibernate,Jpa,我是Hibernate框架的新手,我对持久化和更新工作的方式很好奇 目前在我的项目中,当我想将收集到的数据持久化或更新到数据库中时,我正在通过循环方法一个接一个地进行。比如说, public persistData(){ List<Person> personList = new ArrayList<>(); for(Person person : personList){ session.persist(per

我是Hibernate框架的新手,我对持久化和更新工作的方式很好奇

目前在我的项目中,当我想将收集到的数据持久化或更新到数据库中时,我正在通过循环方法一个接一个地进行。比如说,

    public persistData(){
       List<Person> personList = new ArrayList<>();
       for(Person person : personList){
            session.persist(person);
       }
    }
或者,还有其他方法可以在不循环的情况下一次保存/更新数据集合吗

编辑: 我在中发现了Hibernate批处理 及

我正在用hibernate开发持久化/更新/删除数据的通用类,我应该用

    public void (List<T> addedItemList)

就我的理解,批量持久化应该用大量的事务来完成,对吗?如果有时只有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();

这里的要点是开始事务,全部持久化,然后提交。尝试不使用@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();

您可以从阅读文档开始:(选择您使用的版本)。将
for
循环包装到事务中,并在方法末尾提交它将是有效的。如果您使用了大量行,您可以从阅读文档开始:(选择您使用的版本)。将
for
循环包装到事务中,并在方法末尾提交它将是有效的。如果有大量行,请使用
                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();