【发布时间】:2013-04-22 23:00:41
【问题描述】:
根据我在hibernate中的理解(请确认)
1- 如果您通过getSessionFactory().openSession() 获得,则必须session.close()。
2- 如果您通过getSessionFactory().getCurrentSession() 获得它,则无需session.close()。 commit() 后自动关闭。
3- @2 当使用getSessionFactory().getCurrentSession() 时,我们必须在活动事务中执行所有数据库活动,以便我们可以在最后提交()。
4- Hibernate 将所有保存、更新和删除操作排入队列,并仅在 flush() 操作或 提交事务或关闭会话发生这些操作。(根据javadoc)
从以上几点,如果我考虑 1 & 4,那么下面的代码应该可以工作:
Session session = HibernateUtil.getSessionFactory().openSession();
AccountDetails ac = new AccountDetails();
//perform set operations
session.save(ac);
session.close();
System.out.println("new account stored.");
但是它不工作,即它运行平稳但没有反映(存储)在数据库中。为什么会这样?当我在事务中编写代码并提交时,它就会被存储。
我想我错过了一个基本的东西。请澄清。
【问题讨论】:
-
我想你错过了这里的交易! (或在您的配置中的某处)请参阅分步指南的链接laliluna.de/articles/java-persistence-hibernate/…
-
你能分享第 4 点的 javadoc 链接吗?