当我们使用c3p0连接池时,java会话应该在hibernate中关闭吗?
我想知道在hibernate中使用c3p0连接池时是否应该使用session.close()
?或者c3p0在一定时间间隔后自动关闭?我需要在之前打开会话吗
SessionFactory factory = HibernateUtil.getSessionFactory();
Session session=factory.openSession();
因为在下面的教程中,它不会关闭会话
正确的方法是什么
编辑:
这就是我的密码
@SuppressWarnings("unchecked")
@Override
public JSONObject getUserDetails(int id) {
long lStartTime = new Date().getTime();
JSONObject obj = new JSONObject();
try(Session session=factory.openSession()) {
Employee emp=(Employee)session.load(Employee.class,id);
if(emp != null) {
obj.put("id", emp.getId());
obj.put("name", emp.getName());
}
long lEndTime = new Date().getTime();
log.info("[ Personal Details ]Time elapsed For Fetching :"+(lEndTime - lStartTime));
} catch (Exception e) {
// TODO: handle exception
}
}
# 1 楼答案
正如ELLIOT所说,最好不依赖任何东西手动关闭会话,或者如果使用Java7或更高版本,可以使用上面指定的try块
# 2 楼答案
是的,使用try with resources是一个更好的选择
但这里有一些关于它的假设:
# 3 楼答案
我建议您尽快} Statement 来确保发生这种情况
close
使用您的资源,这样连接将更快地返回到池中。您还可以使用^{