Hibernate save() 和 saveOrUpdate() 方法
save() 和 saveOrUpdate() 方法是 Hibernate 中常用的操作数据的方法之一,两种方法都可以用来保存一个对象到数据库中。它们的不同之处在于在不同的情况下它们的行为表现不同。
save() 方法
当给定一个新的对象时,使用 save() 方法将该对象保存到数据库中。该操作在数据库中创建一个新的记录,并返回该对象对应的唯一标识符。如果该对象已经存在于数据库中,则会抛出异常。
示例代码:
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
Person person = new Person();
person.setName("张三");
person.setAge(28);
Long personId = (Long) session.save(person);
transaction.commit();
session.close();
上述代码创建了一个 Person 对象,并将该对象保存到数据库中。在调用 save() 方法之后,可以通过 person.getId() 获取刚刚插入的数据的主键ID。
saveOrUpdate() 方法
当给定一个新的对象时,使用 saveOrUpdate() 方法保存该对象到数据库中。如果该对象不存在于数据库中,则会将该对象保存到数据库中。如果该对象已经存在于数据库中,则会更新该对象对应的记录。而不会抛出异常。
示例代码:
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
Person person = new Person();
person.setId(2L); // 假设这个人已经存在于数据库中了
person.setName("李四");
person.setAge(32);
session.saveOrUpdate(person);
transaction.commit();
session.close();
在上述代码中,使用 saveOrUpdate() 方法保存了一个 Person 对象。该对象已经存在于数据库中,但是在调用 saveOrUpdate() 方法之前,我将 person 对象的 id 设置为 2L,因此 saveOrUpdate() 方法会将该对象在数据库中对应的记录更新为指定的值。注意,如果 person 对象的 id 未设置,则 saveOrUpdate() 方法将该对象存储到数据库中。
总结
Hibernate save() 和 saveOrUpdate() 方法都可以保存对象到数据库中。它们的不同之处在于在不同条件下它们的表现不同。如果您明确地需要将一个新的对象存储到数据库中,那么应该使用 save() 方法。如果您需要同时支持新增和更新操作,则应该使用 saveOrUpdate() 方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Hibernate save() saveorupdate()的用法第1/2页 - Python技术站