问题:
1) 如果我从 Hibernate 4.x 升级到 Hibernate 5.x,我是否仍然可以使用“旧”条件查询,或者仅使用新的条件查询TypedJPA2 标准查询?旧的是否已被弃用,或者我可以同时使用两者吗?
2)我是否正确理解新的类型标准迫使我创建第二个类each我有实体类,因此重复了多个类?我应该手动创建这些类吗?如果没有,怎么办? Rant:必须重复课程似乎很奇怪,所以我一定是在某种程度上误解了它?这不是太过分而且不必要的复杂吗?
不,旧的标准 API 并未被弃用。看看javadoc http://docs.jboss.org/hibernate/orm/5.1/javadocs/org/hibernate/SharedSessionContract.html#createCriteria-java.lang.Class-:没有弃用警告。但我建议坚持使用标准 JPA API,而不是将标准 JPA API 与专有的 Hibernate API 混合使用。
不,它不会强迫你。您仍然可以使用字符串标识符。但如果类型安全是目标,则强烈建议使用元模型类。
当然,您不需要手动生成这些。它们是由注释处理器 https://docs.jboss.org/hibernate/orm/5.0/topical/html/metamodelgen/MetamodelGenerator.html,来自您的实体类及其映射注释。你可能会觉得很奇怪,但使用起来更安全root.get(MyEntity_.firstName)
than root.get("firstName")
:在编译时检测到拼写错误,并且如果将该字段重构为firstname
,编译器会生成错误而不是让你使用旧的"firstName"
字符串标识符。
我仍然发现 JPQL 查询更容易编写、理解和维护,并且只有在必须基于多个...条件生成动态查询时才会使用条件 API。使用自动化测试来检查查询是否正确。顺便说一句,即使使用条件查询,也可以执行相同的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)