createQuery和使用hibernate会话接口有什么区别吗?

时间:2015-09-16 03:19:44

标签: hibernate

例如我有这些代码:

    session = getSessionFactory().getCurrentSession();
    users = session.createQuery("from Users where id=?")
            .setParameter(0, id)
            .list();

并且

    session = getSessionFactory().getCurrentSession();
    users = session.get(Users.class, id);

我无法明确哪一个更好,我们什么时候应该使用它们?

1 个答案:

答案 0 :(得分:1)

在第二种情况下,它返回对象用户(不是列表)的实例。

在第一个用户列表中可以预期。

如果未找到任何内容,则第一个案例返回空列表,但第二个案例返回null。来自Session.java

/**
 * Return the persistent instance of the given entity class with the given identifier,
 * or null if there is no such persistent instance. (If the instance is already associated
 * with the session, return that instance. This method never returns an uninitialized instance.)
 *
 * @param clazz a persistent class
 * @param id an identifier
 *
 * @return a persistent instance or null
 */
public Object get(Class clazz, Serializable id);