2015-02-11 50 views
3

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

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

回答

3

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

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

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

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