首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate保存方法实践

Hibernate保存方法实践
EN

Code Review用户
提问于 2016-02-18 09:48:08
回答 1查看 56关注 0票数 1

我们是新进入hibernate,在我们的项目中保存一个条目,以下给定的代码是使用的,请看一下。

代码语言:javascript
复制
public void save(Object obj) {
    Session session = null;
    Transaction transaction = null;
    try {
        session = sessionFactory.getCurrentSession();
        transaction = session.beginTransaction();
        session.save(obj);
        session.flush();
        transaction.commit();
    } catch (JDBCException jde) {
        logger.fatal("Error occured in database communication", jde);
        transaction.rollback();
        throw new RuntimeException(jde);
    } finally {
        if (session.isOpen()) {
            session.close();
        }
    }
}

这是正确的做法(考虑到性能和安全性)吗?这个线安全吗?因为同时可能有很多用户。

附加问题:在Java 8中有什么方法可以使代码更好吗?

ps:这个方法是在我们的DatabaseUtil类中编写的。

EN

回答 1

Code Review用户

发布于 2016-02-18 10:38:06

您的finally应该尽可能安全,因为您可能已经发生了一些错误。为此,使用空指针可能会遇到麻烦:

代码语言:javascript
复制
} finally {
    if (session.isOpen()) {
        session.close();
    }
}

如果会话是null,那么您刚刚导致了另一个错误,所以在调用它之前先测试session

代码语言:javascript
复制
} finally {
    if (session != null && session.isOpen()) {
        session.close();
    }
}
票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/120390

复制
相关文章

相似问题

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