什么时候使用HQL而不是Hibernate OO方法?

问题描述 投票:0回答:1

我正在学习休眠和阅读在线资料以了解这一点。

何时优先使用HQL(或SQL)而不是hibernate提供的OO方式?也就是说,何时应该更喜欢HQL而不是session.get()? (阅读操作)

任何人都可以帮我理解这个吗?

hibernate jpa hql
1个回答
1
投票

即使Hibernate是最常用的JPA实现,我也会坚持使用规范API(JPA)。 所以EntityManager而不是Session

通常,您希望编写自己的查询,因为查询具有最低级别的复杂性。 但是特定的JPA / Hibernate方法不允许执行这种查询。 这些方法只处理简单的情况。

因此,作为一般规则,您应该在每次使用时优先于自定义查询创建特定的JPA / Hibernate方法。 避免使用JPQL编写样板代码通常是一种捷径。 例如,如果要从其ID中检索实体,则没有任何值可以在手边编写如此简单的查询。 您将不得不编写锅炉板代码(创建查询,设置参数查询,执行查询)。 使用EntityManager.find(Class<T>, Object)是一种更简单,更清晰的方法,因为您无需进一步了解该行为。

请注意,通过提供更多方法来处理其他经典查询,Spring Data JPA更进一步。 SimpleJpaRepository类就是一个很好的例子。

最后,请注意,在某些情况下,操作实体的特定JPA / Hibernate方法不是一种选择。 与实体或EntityManager状态相关的操作只能使用这些方法(persist()flush()refresh()clear(),......)执行。

© www.soinside.com 2019 - 2024. All rights reserved.