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

标签 java mysql hibernate transactions

到目前为止,我已经看到了两种从数据库(例如 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/

相关文章:

sql - MySQL - 基于日期加入

mysql - PostgreSQL 上的公式查询

php - MySQL:分组并计算多个字段

java - hibernate "PreInsertEvent.getSource()"NoSuchMethodError

Java,从多个线程中移除元素

java - 获取 .com 域名 whois.verisign-grs.com 的 Whois 数据

java - 除以零,同时在 Android 的表格布局中动态添加列

java - 在一次查询 JPA 中获取计数和结果

hibernate - 何时在 hibernate 中使用 property-ref 属性

java - 如何仅从第一个空格出现的 Java 中拆分字符串