如果你的資料庫支援ANSI或者Oracle風格的外串連,外串連抓取可能提高效能,因為可以限制和資料庫互動的數量(代價是資料庫自身進行了更多的工作)。外串連抓取允許你在一個SELECT語句中就可以得到一個由多對一或者一對一串連構成的對象圖。
預設情況下,抓取在葉對象,擁有代理的對象或者產生對自身的引用時終止。
對一個特定關聯來說,通過在XML對應檔中設定outer-join屬性可以控制是否開啟抓取功能。
設定hibernate.use_outer_join為false將禁用全域的外串連抓取.設定為true將啟用所有一對一(one-to-one)和多對一(many-to-one)關聯中的外串連抓取,預設情況下,它被設定為auto,即自動外串連。但是,一對多關聯和集合永遠不會使用外串連抓取,除非對每個特定的關聯進行明確聲明。這一行為可以在運行時通過NHibernate 查詢重載。
自訂
CacheProvider
通過實現NHibernate.Cache.ICacheProvider介面,你可以整合一個第二級緩衝進來。你可以通過hibernate.cache.provider_class選擇某個自訂的實現。
查詢語言替換
你可以使用hibernate.query.substitutions定義新的NHibernate查詢短語。比如說:
hibernate.query.substitutions true=1, false=0
會在產生的SQL中把短語true和 false替換成整數值。
hibernate.query.substitutions toLowercase=LOWER
這可以讓你重新命名SQL的LOWER 函數。
Logging
通過Apache log4net,NHibernate記錄很多事件。
你可以從 http://logging.apache.org/log4net/下載 log4net. 要使用log4net,你要在app.config或者web.config中配置log4net節點.在src/NHibernate.Test工程中有一個配置的例子.
我們強烈建議你熟悉NHibernate's的log資訊。NHibernate's的很多工作都會盡量詳細的留下log,也沒有讓它變的難以閱讀。這是用來解決問題的最基本的設施。