JPA 实体和查询的编译时检查
Compile-time checks for JPA entities and queries
一些 IDE(我在看着你,IntelliJ IDEA)能够对 JPA 实体 类 以及查询(包括参数)执行一些静态检查。
是否有任何方法可以在编译时做同样的事情,以便将此类检查集成到构建过程中,类似于 运行 单元测试?显然,一个好的单元测试套件将测试所有的实体和查询,但是能够拥有这种额外级别的验证会很好。
您可以利用 JPA Metamodel Generator support,因此您可以在构建条件 API 查询时使用元模型 类。这将为您的查询构建过程提供编译时安全保证。
但这并不能免除您添加彻底 integration testing routine 的责任,因此您可以验证整个数据访问层甚至事务管理支持。
尤其是条件API,可以generate some unexpected SQL queries. That's why it's good practice to examine and validate all generated SQL queries。
我最喜欢的检查是确保 actual SQL query count Hibernate 代表您生成。这可以防止 N+1 查询问题,并让您深入了解 Hibernate 的内部工作原理。
一些 IDE(我在看着你,IntelliJ IDEA)能够对 JPA 实体 类 以及查询(包括参数)执行一些静态检查。
是否有任何方法可以在编译时做同样的事情,以便将此类检查集成到构建过程中,类似于 运行 单元测试?显然,一个好的单元测试套件将测试所有的实体和查询,但是能够拥有这种额外级别的验证会很好。
您可以利用 JPA Metamodel Generator support,因此您可以在构建条件 API 查询时使用元模型 类。这将为您的查询构建过程提供编译时安全保证。
但这并不能免除您添加彻底 integration testing routine 的责任,因此您可以验证整个数据访问层甚至事务管理支持。
尤其是条件API,可以generate some unexpected SQL queries. That's why it's good practice to examine and validate all generated SQL queries。
我最喜欢的检查是确保 actual SQL query count Hibernate 代表您生成。这可以防止 N+1 查询问题,并让您深入了解 Hibernate 的内部工作原理。