到目前为止,我已经看到了两种从数据库中检索对象的方法(例如MySQL),一种是session.get(EntityName.class, Id);
,另一种是:criteria.add(Restrictions.eq('id', Id)).uniqueResult();
当我想要更新对象中的单个字段时,我发现第一种方法很方便,我可以使用setter更新对象然后提交事务,但我不确定这两种方式之间有什么区别。
答案 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()
无法实现。