Hibernate 5和Typed Criteria Queries(JPA2)

时间:2016-03-06 07:46:46

标签: java hibernate jpa-2.0 criteria-api

问题:

1)如果我从Hibernate 4.x升级到Hibernate 5.x,我还可以使用“旧”条件查询,还是只使用新的类型 JPA2条件查询?是旧的还是旧的,还是我可以并排使用?

2)我是否正确理解新的Typed Criteria迫使我为每个实体类创建第二个类,从而重复了类的数量?我应该手动创建这些类吗?如果没有,怎么样?咆哮:不得不复制课程看起来很奇怪,所以我必须以某种方式误解它?这不是过度杀伤而且不必要的复杂吗?

1 个答案:

答案 0 :(得分:11)

  1. 不,旧标准API不会被弃用。只需查看the javadoc:没有弃用警告。但我建议坚持使用标准的JPA API,而不是使用与专有Hibernate API混合的标准JPA API。

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

  3. 当然,您不需要手动生成这些。它们是由an annotation processor从您的实体类及其映射注释生成的。您可能会发现它很奇怪,但使用setTimeout(function(){ $("#button").unbind("click"); }, 3000) root.get(MyEntity_.firstName)更安全:在编译时检测到拼写错误,如果您将字段重构为root.get("firstName"),编译器将生成错误而不是让您使用旧的firstname字符串标识符。

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