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

时间:2014-07-23 09:31:00

标签: 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中一样(我老师教我这个。)

Q2。当用户从我的网站退出时,我应该关闭连接吗?

Q3。会sessionfactory.close();还会破坏我的会话变量(session.setattribute(" user",ur);)。

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

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

1 个答案:

答案 0 :(得分:4)

1.您应该关闭Session而不是SessionFactory 2.执行查询后,您已经关闭了Session,那么从网站logout开始关闭的重点是什么? 3。HttpSession Hibernate 中的Session不同。 HttpSession用于存储用于维护用户请求序列的属性。但 Hibernate 中的Session仅与数据库进行交互。因此,在 Hibernate 中关闭Session并不会反映在HttpSession上 4.如果您使用openSession(),则应手动关闭会话。但如果您使用getCurrentSession(),则无需烦恼,一旦提交了事务,会话将自动关闭。
希望它有所帮助,