繁体   English   中英

何时在hibernate中关闭数据库连接?

[英]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. HttpSessionHibernate中的 Session不同。 HttpSession用于存储用于维护用户请求序列的属性。 但是Hibernate中的 Session只与数据库交互。 因此,在Hibernate中关闭Session并不反映HttpSession
4.如果你正在使用openSession() ,你应该手动关闭会话。但是如果你使用的是getCurrentSession() ,你不需要打扰它,一旦提交了事务,会话将自动关闭。
希望能帮助到你,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM