Java 在Hibernate中按ID获取对象

Java 在Hibernate中按ID获取对象,java,hibernate,orm,Java,Hibernate,Orm,我注意到我们的高级开发人员使用以下代码按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); Hib

我注意到我们的高级开发人员使用以下代码按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);

这两段代码并不等同

session.load(Source.class, id);
如果没有标识符为
id
实体,则将引发异常

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

如果没有标识符为
id

实体,则将返回null,我猜这是使用较旧的hibernate版本开发的。我认为hibernate 3.4以后的版本支持getSession()。根据Robert C.Martin的《干净的代码》一书,也许他也想保持代码“干净”,而不是在一行代码上写多条语句。
getSession().get(Source.class, id);