java - 什么时候关闭 hibernate 中的数据库连接?

标签 java hibernate session

首先,这听起来像是一个重复的问题,但我没有得到我期待的解决方案,所以我发布了这个新问题?几天前我开始学习 hibernate 。我坚持这一件事:

这是我的代码:

public static void open_connection()

sessionfactory=new Configuration().configure().buildSessionFactory();
Listsession = sessionfactory.openSession();
}

public  List select(String qry)
{ 
    open_connection();  
    Listsession.beginTransaction();
    query =Listsession.createQuery(qry);
    list=query.list();
    Listsession.getTransaction().commit();
    Listsession.close();
    sessionfactory.close();
    }

Q1. 我在查询运行时关闭了 sessionfactory。这是一个好方法吗?我想在我们不需要它时关闭数据库连接,就像我们在 JDBC 中所做的那样(我的老师教我的)。

问题 2. 当用户从我的站点注销时,我是否应该关闭连接?

Q3. 请问sessionfactory.close();也销毁我的 session 变量(session.setattribute(“用户”,你);)。

Q4. Listsession.getTransaction().commit();也关闭交易?

我想知道这一点,因为很多时候我在 netbeans 上运行我的项目时,我得到空指针异常,但是当我在线运行同一个项目时,我没有得到空指针异常,我认为这是因为每次运行时都会调用 openconnection我的项目。 很抱歉发布了这么多问题,因为我无法得到我正在寻找的确切答案。

最佳答案

1.你应该关闭Session而不是SessionFactory
2.你已经在执行查询后关闭了Session,那么当从站点logout时再次关闭的点在哪里?
3.HttpSessionHibernate中的Session不同。 HttpSession 用于存储用于维护用户请求顺序的属性。但是 Hibernate 中的 Session 只能与 Database 交互。因此,在 Hibernate 中关闭 Session 不会反射(reflect)在 HttpSession 上。
4.如果你使用的是openSession(),你应该手动关闭session。但是如果你使用的是getCurrentSession(),你就不用管它了,一旦事务提交, session 将自动关闭。
希望对你有帮助,

关于java - 什么时候关闭 hibernate 中的数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24906834/

相关文章:

java - 返回正数之和

java - OpenGL 上下文 (libgdx)

java - ORM 过程中类名重要吗?

java - 浏览器重启java后保持 session

session - 如何在nodejs中保存session参数。 nowjs 示例

session - 谁能解释 GA4 中的 session_start 事件计数与 session 指标有何不同?

java - 如何避免在括号中用逗号拆分?

java - 将 Android 数据库用于待办事项列表

java - 在 Hibernate 中使用原语或包装类?

java - Hibernate 一级和二级缓存如何与多个 session 一起工作