下面的说法是否有效?
persist() 还保证如果在事务边界之外调用它不会执行 INSERT 语句
当我使用 persist 尝试下面的代码时;然后在没有任何事务的情况下插入该行(它被注释掉了)。
SessionFactory sessionFactory = new Configuration().configure("student.cfg.xml").buildSessionFactory();
Session session = sessionFactory.openSession();
//Transaction tran = session.beginTransaction();
/*
* Persist is working without transaction boundaries ===> why?
*/
Student student = new Student();
student.setFirstName("xxx");
student.setLastName("yyy");
student.setCity("zzz");
student.setState("ppp");
student.setCountry("@@@");
student.setId("123456");
session.persist(student);
//tran.commit();
session.flush();
session.close();
最佳答案
persist() also guarantees that it will not execute an INSERT statement if it is called outside of transaction boundaries
这个说法是正确的。当控制从 persist()
返回到您的代码时,没有执行任何 INSERT
语句。这些语句保证被推迟到 session 刷新。请注意,如果 ever 没有插入发生,persist()
将是一个毫无意义的方法。
关于java - Hibernate 的 persist() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14138955/