gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 02:44:55 24 4
gpt4 key购买 nike

首先,这听起来像是一个重复的问题,但我没有得到我期待的解决方案,所以我发布了这个新问题?几天前我开始学习 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com