【问题标题】:Get object by ID in Hibernate在 Hibernate 中通过 ID 获取对象
【发布时间】:2013-10-30 17:47:03
【问题描述】:

我注意到我们的高级开发人员使用以下代码通过 ID 检索实体:

@Override
public Source get(Long id) {
    Session session = getSession();
    if( session == null )
        session = sessionFactory.openSession();
    final Source source = (Source)session.load(Source.class, id);
    Hibernate.initialize(source);
    return source;
}

这段代码有什么好处?

为什么不简单地写

return (Soruce) getSession().get(Source.class, id);

【问题讨论】:

  • 我猜这是用旧的休眠版本开发的。我认为 hibernate 3.4 以后支持 getSession()。
  • 也许他还想根据 Robert C. Martin 的“清洁代码”一书保持代码“清洁”,而不是在一行代码上编写多个语句。

标签: java hibernate orm


【解决方案1】:

这两段代码并不等同。

session.load(Source.class, id);

如果没有标识符为idSource 实体,将抛出异常

getSession().get(Source.class, id);

如果没有标识符为 idSource 实体,将返回 null

【讨论】:

    猜你喜欢
    • 2013-04-13
    • 2012-06-30
    • 2011-09-03
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    相关资源
    最近更新 更多