到目前为止,我已经看到了两种从数据库(例如 MySQL)检索对象的方法,一种是 session.get(EntityName.class, Id);
另一种是: criteria.add(Restrictions.eq('id', Id)).uniqueResult();
当我想更新对象中的单个字段时,我发现第一种方式很方便,我可以使用 setter 更新对象然后提交事务,但我不确定这两种方式有什么区别。
最佳答案
Session.get()
如果实例已经与 session 相关联,则返回该实例。
条件总是转到数据库以获取特定行。除此之外,您可以发现的主要区别是更喜欢 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()
不可能。
关于java - Hibernate:session.get(EntityName.class, Id) 和使用 Criteria 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24658689/