在session.close()之后设置session = null是否有意义?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在session.close()之后设置session = null是否有意义?相关的知识,希望对你有一定的参考价值。
考虑这段代码:
public void foo(){
try{
//some cool statements here
}
finally {
if(session != null){
session.close();
sesssion = null;
}
}
}
由于会话已关闭,分配给会话的值是否有意义?请提供一些有价值的见解。
答案
将变量设置为null在对象本身变得无用的情况下非常有用,在此示例中为闭合会话。这些对象通常记录在调用close
或类似方法之后,对该对象的所有进一步操作都将失败,例如,通过投掷IllegalStateException
。在这些情况下,删除这样的实例是有意义的,特别是如果代码的其他部分期望并检查空实例作为“无连接”的标志。
如其他答案中所述,垃圾收集不是将变量设置为null的正当理由。
另一答案
将局部变量设置为null
是不必要的,因为它是CERT Oracle安全编码标准的Recommendations的一部分
将本地引用变量设置为null以“帮助垃圾收集器”是不必要的。它会增加代码的混乱,并使维护变得困难。 Java即时编译器(JIT)可以执行等效的活动分析,大多数实现都是这样做的。
以上是关于在session.close()之后设置session = null是否有意义?的主要内容,如果未能解决你的问题,请参考以下文章
在hibernate中先commit再关闭session和先关闭session再commit有啥区别
通过hibernate session.connection()获得数据库连接时,导致的查询缓慢甚至假死机问题