首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在HIbernate/SQL中获取会话和发布会话的最佳方法

在HIbernate/SQL中获取会话和发布会话的最佳方法
EN

Stack Overflow用户
提问于 2012-03-30 21:24:22
回答 5查看 3.7K关注 0票数 1

考虑以下两个代码。

代码语言:javascript
复制
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);
        }
    }

还有……

代码语言:javascript
复制
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(会话)之前,我们是否应该做一个空检查?

EN

回答 5

Stack Overflow用户

发布于 2012-03-30 21:26:57

诚然,最好的方法是利用Spring及其JPA/Hibernate支持……你永远不需要在你的代码中处理它。

票数 2
EN

Stack Overflow用户

发布于 2012-03-30 21:29:50

老实说,我想说这两个没有太大的区别,但你应该总是检查会话是否为空,这样你就不会引起另一个NullReferenceException。

不幸的是,在Java语言中这可能是最干净的方式,因为没有像C#中那样的" using“语句,它允许您在using块执行完毕后释放对象。

票数 1
EN

Stack Overflow用户

发布于 2012-03-30 21:49:06

我建议使用事务。例如,如果明天您更改代码以添加另一个更新,您将不必担心任何一致性问题,以防在执行更新时发生某些事情。除此之外,我建议在查询中使用参数,而不是对值进行硬编码。这样,您就可以重用查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9943879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档