编译时检查JPA实体和查询

时间:2015-02-11 16:13:42

标签: java hibernate jpa orm static-analysis

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

有没有办法在编译时做同样的事情,这样这些检查可以集成到构建过程中,类似于运行单元测试?显然,一个好的单元测试套件将运行所有实体和查询,但能够进行额外的验证级别会很好。

1 个答案:

答案 0 :(得分: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内部工作。

相关问题