编译时检查JPA实体和查询

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

一些IDE(我正在看你,IntelliJ IDEA)能够对JPA实体类以及查询(包括参数)执行一些静态检查。

是否有任何方法可以在编译时执行相同的操作,以便可以将这些检查集成到构建过程中,类似于运行单元测试?显然,一个好的单元测试套件将运行所有实体和查询,但能够进行这种额外的验证级别会很好。

java hibernate jpa orm static-analysis
1个回答
3
投票

您可以利用JPA Metamodel Generator support,因此您可以在构建Criteria API查询时使用Metamodel类。这将为您提供查询构建过程的编译时安全保障。

但这并不能免除您添加全面的integration testing routine,因此您可以验证整个数据访问层甚至是事务管理支持。

特别是Criteria API,它可以generate some unexpected SQL queries。这就是为什么examine and validate all generated SQL queries的好习惯。

我最喜欢的检查是确保代表你生成actual SQL query count Hibernate。这可以防止N + 1查询问题,并让您深入了解Hibernate内部工作。

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