首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate persist()方法

Hibernate persist()方法
EN

Stack Overflow用户
提问于 2013-01-03 20:28:31
回答 2查看 1.6K关注 0票数 2

下面的陈述是有效的吗?

persist() also guarantees that it will not execute an INSERT statement if it is called outside of transaction boundaries

当我使用persist尝试下面的代码时,在没有任何事务的情况下插入了行(它被注释掉了)。

代码语言:javascript
复制
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();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-03 20:53:53

persist()还保证,如果在事务边界之外调用INSERT语句,它将不会执行该语句

这句话是正确的。当控制权从persist()返回到您的代码时,没有执行任何INSERT语句。这些语句被保证延迟到会话刷新。注意,如果没有发生插入,那么persist()将是一个毫无意义的方法。

票数 1
EN

Stack Overflow用户

发布于 2013-01-03 20:44:47

由于session.flush(),正在保存AFAIK数据,删除后尝试,大多数情况下你会得到一个错误。

Hibernate persist

Diff. save & persist

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14138955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档