Hibernate:session.get(EntityName.class,Id)和使用Criteria之间的区别

时间:2014-07-09 16:08:09

标签: java mysql hibernate transactions

到目前为止,我已经看到了两种从数据库中检索对象的方法(例如MySQL),一种是session.get(EntityName.class, Id);,另一种是:criteria.add(Restrictions.eq('id', Id)).uniqueResult();

当我想要更新对象中的单个字段时,我发现第一种方法很方便,我可以使用setter更新对象然后提交事务,但我不确定这两种方式之间有什么区别。

1 个答案:

答案 0 :(得分:3)

Session.get()

如果实例已与会话关联,则返回该实例。

标准始终转到数据库以获取特定行。除此之外,您可以找到的主要区别是criteria queries用于动态查询。

考虑那个案例

criteria.add(Restrictions.eq('this', that)).uniqueResult();
criteria.add(Restrictions.eq('this', that)).uniqueResult();
criteria.add(Restrictions.eq('this', that)).uniqueResult();
criteria.add(Restrictions.eq('this', that)).uniqueResult();
-----
criteria.uniqueResult();

你看到那里......?限制太多了吗? get()无法实现。