一尘不染

Hibernate 5和类型化标准查询(JPA2)

hibernate

问题:

1)如果我从Hibernate 4.x升级到Hibernate 5.x,我仍然可以使用“旧”条件查询还是仅使用新的 Typed
JPA2条件查询?旧的是否已弃用,还是可以同时使用?

2)我是否正确理解新的类型化标准会迫使我为我拥有的 每个
实体类创建第二个类,从而使类的数量重复?我应该手动创建这些类吗?如果没有,怎么办?兰特:必须重复上课似乎很奇怪,所以我一定会对它有所误解?那不是过度杀伤和不必要地复杂吗?


阅读 255

收藏
2020-06-20

共1个答案

一尘不染

  1. 否,不建议使用旧的标准API。只需查看javadoc:没有弃用警告。但是我建议您坚持使用标准的JPA API,而不要使用标准的JPA API和专有的Hibernate API。

  2. 不,不会强迫你。您仍然可以使用字符串标识符。但是,如果以类型安全为目标,则强烈建议使用元模型类。

当然,您不需要手动生成这些。它们是由注释处理器根据您的实体类及其映射注释生成的。您可能会觉得它很奇怪,但是root.get(MyEntity_.firstName)比使用它更安全root.get("firstName"):在编译时检测到错字,如果将字段重构为firstname,编译器会生成错误,而不是让您使用旧的"firstName"字符串标识符。

我仍然发现JPQL查询更易于编写,理解和维护,并且仅在必须基于多个…标准生成动态查询时才使用标准API。使用自动测试来检查查询是否正确。即使使用条件查询BTW,也要这样做。

2020-06-20