外串連抓取(Outer Join Fetching )

來源:互聯網
上載者:User

 

如果你的資料庫支援ANSI或者Oracle風格的外串連,外串連抓取可能提高效能,因為可以限制和資料庫互動的數量(代價是資料庫自身進行了更多的工作)。外串連抓取允許你在一個SELECT語句中就可以得到一個由多對一或者一對一串連構成的對象圖。

預設情況下,抓取在葉對象,擁有代理的對象或者產生對自身的引用時終止。

對一個特定關聯來說,通過在XML對應檔中設定outer-join屬性可以控制是否開啟抓取功能。

設定hibernate.use_outer_joinfalse將禁用全域的外串連抓取.設定為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中把短語truefalse替換成整數值。

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,也沒有讓它變的難以閱讀。這是用來解決問題的最基本的設施。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.