hibernate createQuery vs get

时间:2013-03-14 23:22:55

标签: java hibernate

getcreateQuery有什么好处?

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

2 个答案:

答案 0 :(得分:5)

首先,输入更快,更具可读性,并清楚地表达意图:通过ID获取实体。而且基本上不可能出错,而你的HQL查询可能会出现错字。

关于性能,主要优点是仅当实体不在会话缓存中时才执行select语句。每次都会执行HQL查询。如果您有二级缓存,get()将避免在实体已经位于二级缓存中时完全执行查询。

答案 1 :(得分:0)

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

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

createQuery()使用HQL

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