您好我正在尝试了解hibernate的save和persist方法的行为。为此,我编写了一个非常简单的方法,并尝试使用事务和out事务运行它,但它实际上让我很困惑。
@Test
public void saveOrPersist() {
Person person = new Person();
person.setFirstName("naveen");
person.setLastName("kumar");
// 1 session.beginTransaction();
session.persist(person);
// 2 session.save(person);
// 3 session.flush();
// 4 session.getTransaction().commit();
}
用这种方法我做了以下事情。 取消注释第1,2和4行并注释第2行上方的行以测试save方法的行为。它工作正常,并在eclipse控制台上给我以下内容。
Hibernate: select nextval ('hibernate_sequence')
Hibernate: insert into BaseEntity (createDateTime, description, updateDateTime, firstName, lastName, discriminator, id) values (?, ?, ?, ?, ?, 'p', ?)
还检查数据库以及另外一个插入到人员表中的条目。 第二,我评论第1行和第4行再次使用事务运行相同的测试用例。然后它给我下面的输出
Hibernate: select nextval ('hibernate_sequence')
这次没有进入人员表。
然后我用persist方法做了同样的事情。使用事务和没有事务运行persist方法两次,我在eclipse控制台上得到了相同的结果。
现在我的问题是除了返回类型之外,persist和save之间还有一个区别。那就是持久化方法不能解决交易方面的问题。我试图学习这个东西。有些人可以说出这个概念有什么问题,或者我错误地理解了这个概念。如果它然后用更多的描述更正我的代码。提前谢谢。