某些IDE(我正在看你,IntelliJ IDEA)能够对JPA实体类以及查询(包括参数)执行一些静态检查。
有没有办法在编译时做同样的事情,这样这些检查可以集成到构建过程中,类似于运行单元测试?显然,一个好的单元测试套件将运行所有实体和查询,但能够进行额外的验证级别会很好。
答案 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内部工作。