考虑以下两个代码。
Session session = null;
query = "update Employee set EMPLOYEE_NAME = 'Jay' where EMPLOYEE_ID = 1";
try {
session = getSession();
Query query = session.createSQLQuery(dlquery);
query.executeUpdate();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if(session != null) {
releaseSession(session);
}
}还有……
Session session = getSession();
query = "update Employee set EMPLOYEE_NAME = 'Jay' where EMPLOYEE_ID = 1";
try {
Query query = session.createSQLQuery(dlquery);
query.executeUpdate();
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if(session != null) {
releaseSession(session);
}
}两者中哪一个更适合使用?还是有更好的方法?我在这里可能做错了什么?
另外,在finally中调用releaseSession(会话)之前,我们是否应该做一个空检查?
发布于 2012-03-30 21:26:57
诚然,最好的方法是利用Spring及其JPA/Hibernate支持……你永远不需要在你的代码中处理它。
发布于 2012-03-30 21:29:50
老实说,我想说这两个没有太大的区别,但你应该总是检查会话是否为空,这样你就不会引起另一个NullReferenceException。
不幸的是,在Java语言中这可能是最干净的方式,因为没有像C#中那样的" using“语句,它允许您在using块执行完毕后释放对象。
发布于 2012-03-30 21:49:06
我建议使用事务。例如,如果明天您更改代码以添加另一个更新,您将不必担心任何一致性问题,以防在执行更新时发生某些事情。除此之外,我建议在查询中使用参数,而不是对值进行硬编码。这样,您就可以重用查询。
https://stackoverflow.com/questions/9943879
复制相似问题