2015-02-11 48 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內部運作。