根据我在hibernate中的理解(请确认)
1-session.close()
如果你得到它,你必须这样做getSessionFactory().openSession()
。2-如果您得到它,则
无需。它在commit()之后自动关闭。 session.close()
getSessionFactory().getCurrentSession()
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.");
但是它不工作,即它运行平稳但没有反映(存储)在数据库中。为什么会这样?当我在事务中编写代码并提交时,它就会被存储。
我想我错过了一个基本的东西。请说清楚。