在Hibernate中通过ID获取对象

MyT*_*tle 8 java orm hibernate

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

这段代码有什么好处?

为什么不简单写作

return (Soruce) getSession().get(Source.class, id);
Run Code Online (Sandbox Code Playgroud)

ben*_*n75 11

这两段代码并不相同.

session.load(Source.class, id);
Run Code Online (Sandbox Code Playgroud)

如果没有带标识符的实体,则会抛出异常.Sourceid

getSession().get(Source.class, id);
Run Code Online (Sandbox Code Playgroud)

如果没有带标识符的实体,则返回null.Sourceid