以下陈述是否有效?
persist() also guarantees that it will not execute an INSERT statement if it is called outside of transaction boundaries
当我使用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();
答案 0 :(得分:1)
persist()还保证如果在事务边界之外调用它,它将不会执行INSERT语句
这句话是对的。当控件从persist()
返回到您的代码时,没有执行INSERT
语句。这些声明保证推迟到会话刷新。请注意,如果没有插入曾经,persist()
将是一个毫无意义的方法。
答案 1 :(得分:0)