首页 > 解决方案 > 使用同一对象调用休眠的多次 save() 方法是否会在数据库中插入新记录?

问题描述

for(int index=0; index<10; index++) {
   Session session = hibernateTemplate.getSessionFactory().openSession();
   session.save(object);
}

此代码是否将传递的对象存储在 DB 中的 save(object) 中 10 次,还是每次都会被覆盖?

标签: javaspringhibernaterestnhibernate-mapping

解决方案


这取决于对象的状态。

如果每次都创建一个新对象,那么新对象处于瞬态:它没有映射到数据库记录,也不受任何持久性上下文的管理。因此,调用 Hibernate 的save()方法将在数据库中创建一条新记录。

但是,如果您save()使用已附加到当前持久性上下文并映射到数据库记录的托管对象调用方法:相同的对象将被更新。


推荐阅读