java - Hibernate 的 persist() 方法

标签 java hibernate

下面的说法是否有效?

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/

相关文章:

java - @ManyToOne 引用的 getId() 上的 LazyInitializationException

java - 使用 hibernate 将表情符号保存到 mysql 不正确的字符串值 : '\xF0\x9F\x98\x88\xF0\x9F...' for column 'name' at row 1

java - 返回数字的输出没有达到预期?

java - 从完全相同的 @Configuration 类习惯用法中注入(inject) @Beans

java - VJET Java2J 与 Maven?

java - Hibernate Annotations,从现有的两个实体创建第三个实体,而不注释已经注释的表

java - 在没有 Java 知识的情况下学习 Clojure

java - 使用 Lwjgl 的导出库

java - Hibernate 中的查询异常

java - 实体映射正在动态创建不需要的列