8

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

1 回答 1

11

那两段代码不等价。

session.load(Source.class, id);

如果没有具有标识符的实体,将抛出异常Sourceid

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

如果没有具有标识符的实体,将返回 nullSourceid

于 2013-10-30T19:28:25.720 回答