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