开发者社区> 问答> 正文

Hibernate 语句执行顺序问题

代码:
private static void editInfo() {
    Session session = null;
    try {
        session = HibernateUtil.getSession();
        if (session != null) {
            session.beginTransaction();
            Person p = new Person("王三", 22, "男", "北京");
            session.save(p);
            session.delete(p);
            p.setId(null);
            session.save(p);
            session.getTransaction().commit();
        }
    } catch (Exception ex) {
        if (session != null) {
            session.getTransaction().rollback();
        }
        ex.printStackTrace();
    } finally {
        HibernateUtil.CloseSession();
    }
}
控制台显示:
Hibernate: 
insert 
into
    PERSON
    (NAME, AGE, GENDER, ADDRESS) 
values
    (?, ?, ?, ?)
Hibernate: 
delete 
from
PERSON 
where
ID=?
Hibernate: 
insert 
into
PERSON
(NAME, AGE, GENDER, ADDRESS) 
values
(?, ?, ?, ?)

展开
收起
云栖技术 2016-06-02 15:37:50 2029 0
1 条回答
写回答
取消 提交回答
  • 社区爱好者,专为云栖社区服务!

    session.getTransaction().commit();才会真正执行挂起的数据库操作,之前的操作会产生一个变更集,但是不会记录它们被调用的顺序,所以最后的顺序是不可知的。

    2019-07-17 19:25:03
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载