[英]When to close database connection in hibernate?
首先它可能听起来像一个重复的问题,但我没有得到解决方案我期待所以我发布这个新问题?我几天前开始学习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中那样(我的老师教我)。
Q2。 当用户从我的网站注销时,我应该关闭连接吗?
Q3。 将sessionfactory.close(); 还会破坏我的会话变量(session.setattribute(“user”,ur);)。
Q4。 Listsession.getTransaction()。commit(); 还关闭交易?
我想知道这一点,因为很多次我在netbeans上运行我的项目我得到空指针异常,但是当我在线运行相同项目时,我没有得到空指针异常,我认为这是因为每次运行我的项目时都会调用openconnection。 很抱歉发布了这么多问题,因为我无法得到我正在寻找的确切答案。
你应该关闭Session
而不是SessionFactory
2.您在执行查询后已经关闭了Session
,那么从站点logout
时再次关闭的点是什么?
3. HttpSession
与Hibernate中的 Session不同。 HttpSession
用于存储用于维护用户请求序列的属性。 但是Hibernate中的 Session
只与数据库交互。 因此,在Hibernate中关闭Session
并不反映HttpSession
。
4.如果你正在使用openSession()
,你应该手动关闭会话。但是如果你使用的是getCurrentSession()
,你不需要打扰它,一旦提交了事务,会话将自动关闭。
希望能帮助到你,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.