4

get有什么优势createQuery呢?

我可以看到不必解析 HQL 可能会稍微提高性能,但是使用 get over createQuery 还有其他主要优势吗?

4

2 回答 2

5

First, it's much quicker to type, is much more readable, and expresses the intent clearly: get an entity by its ID. And it's basically impossible to make an error, whereas you could have a typo in your HQL query.

Regarding performance, the main advantage is that it executes a select statement only if the entity is not in the session cache yet. An HQL query will be executed every time. And if you have a second-level cache, get() will avoid executing a query completely if the entity is already in the second-level cache.

于 2013-03-14T23:27:13.440 回答
0

get()直接使用会话来检索对象。

  • get() 仅在您要加载对象时有用,即 SQL SELECT。
  • 就像 save() 和 persist() 会导致 SQL INSERT,delete() 会导致 SQL DELETE 和 update() 或 merge() 会导致 SQL UPDATE。
  • 有限的控制,我们需要指定一个我们需要提取的实体。

createQuery() 使用 HQL

  • 使用 HQL,我们可以编写所有 CRUD 查询。
  • 给予更多控制,我们可以指定 HQL(SQL like) 子句。
  • HQL 是 hibernate 自己的查询语言,用于对 hibernate 程序执行批量操作
  • 面向对象的 SQL 形式称为 HQL。
  • 在这里,我们将用 POJO 类变量名替换表列名,用 POJO 类名替换表名,以获取 HQL 命令
  • 有时很难用其他替代方案编写。使用 HQL 我们可以更快地实现。
于 2017-06-17T11:35:05.603 回答