Hibernate是一個流行的Java對象關系映射框架,Grails的數(shù)據(jù)訪問層GORM就是建立在Hibernate的基礎上。Hibernate能夠根據(jù)配置自動生成SQL語句,使得程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。然而如果使用不當,往往容易造成性能問題,例如N+1次查詢問題。在開發(fā)過程中,常常需要通過查看Hibernate生成的SQL來對數(shù)據(jù)訪問層進行調(diào)優(yōu)。Grails使用了Log4j作為日志組件,因此可以像傳統(tǒng)的基于Hibernate的Java項目那樣,通過配置Log4j來達到輸出Hibernate SQL Log的功能,這里就不再詳述。Grails提供了兩種更加簡單的方法:
1.修改config.groovy文件中的log4j configuration,把hibernate="off"改成hibernate="on",這樣就可以輸出Hibernate運行的詳細日志,包括SQL Log。
2.一般情況下,我們不需要方法1輸出的詳細的日志,僅僅需要輸出SQL Log,可以DataSource.groovy中的數(shù)據(jù)庫環(huán)境配置(environment specific settings),例如在development的dataSource中添加logSql = true即可。
//?environment?specific?settings
environments?{
??development?{
????dataSource?{
??????dbCreate?=?"update"?
??????url?=?"jdbc:hsqldb:mem:devDB"
??????logSql?=?true
????}
??}
}