NHibernate之配置文件屬性說明


一、NHibernate配置所支持的屬性

屬性名 用途
dialect 設置NHibernate的Dialect類名 - 允許NHibernate針對特定的關系數據庫生成優化的SQL

可用值: full.classname.of.Dialect, assembly

default_schema 在生成的SQL中, 將給定的schema/tablespace附加於非全限定名的表名上.

可用值: SCHEMA_NAME

use_outer_join 允許外連接抓取,已棄用,請使用max_fetch_depth

可用值: true | false

max_fetch_depth 為單向關聯(一對一, 多對一)的外連接抓取(outer join fetch)樹設置最大深度. 值為0意味着將關閉默認的外連接抓取

可用值:建議在0 到3之間取值。

use_reflection_optimizer 開啟運行時代碼動態生成來替代運行時反射機制(系統級屬性). 使用這種方式的話程序在啟動會耗費一定的性能,但是在程序運行期性能會有更好的提升. 注意即使關閉這個優化, Hibernate還是需要CGLIB. 你不能在hibernate.cfg.xml中設置此屬性. 這個屬性不能在hibernate.cfg.xml或者是應用程序配置文件<hibernate-configuration> 配置節中設置。

可用值: true | false

bytecode.provider 指定字節碼provider用於優化NHibernate反射性能。 null代表完全關閉性能優化, lcg用於輕量級的代碼動態生成,codedom基於CodeDOM代碼動態生成。

可用值: null | lcg | codedom

cache.provider_class 設置緩存實現類(實現ICacheProvider接口的類)

可用值: classname.of.CacheProvider, assembly

cache.use_minimal_puts 以頻繁的讀操作為代價, 優化二級緩存來最小化寫操作(對群集緩存有效)。

可用值: true | false

cache.use_query_cache 允許查詢緩存, 個別查詢仍然需要被設置為可緩存的.

可用值: true | false

cache.query_cache_factory 自定義實現IQueryCacheFactory接口的類名, 默認為內建的StandardQueryCacheFactory

可用值: classname.of.QueryCacheFactory, assembly

cache.region_prefix 二級緩存區域名的前綴。

可用值: prefix

query.substitutions 將NHibernate查詢中的符號映射到SQL查詢中的符號 (符號可能是函數名或常量名字).

可用值: hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC

show_sql 輸出所有SQL語句到控制台.

可用值: true | false

hbm2ddl.auto ISessionFactory創建時,自動檢查數據庫結構,或者將數據庫schema的DDL導出到數據庫. 使用 create-drop時,在顯式關閉ISessionFactory時,將drop掉數據庫schema.

可用值: create | create-drop

use_proxy_validator 是否啟用驗證接口或者是類是否可以使用代理,默認開啟。(檢查實體類的屬性或者是方法是否被設置為Virtual)

可用值: true | false

transaction.factory_class 自定義ITransactionFactory的實現,默認為NHibernate內建的AdoNetTransactionFactory

可用值: classname.of.TransactionFactory, assembly

 

二、dialect屬性支持的方言選項值

關系型數據庫 方言 備注
DB2 NHibernate.Dialect.DB2Dialect  
DB2 for iSeries (OS/400) NHibernate.Dialect.DB2400Dialect  
Ingres NHibernate.Dialect.IngresDialect  
PostgreSQL NHibernate.Dialect.PostgreSQLDialect  
PostgreSQL 8.1 NHibernate.Dialect.PostgreSQL81Dialect 方言在PostgreSQL8.1中現在支持FOR UPDATE NOWAIT了。
PostgreSQL 8.2 NHibernate.Dialect.PostgreSQL82Dialect 方言在PostgreSQL8.2中現在支持在 DROP TABLEDROP SEQUENCE中使用IF EXISTS關鍵字了。
MySQL 3 or 4 NHibernate.Dialect.MySQLDialect  
MySQL 5 NHibernate.Dialect.MySQL5Dialect  
Oracle (any version) NHibernate.Dialect.OracleDialect  
Oracle 9/10g NHibernate.Dialect.Oracle9Dialect  
Sybase Adaptive Server Enterprise NHibernate.Dialect.SybaseDialect  
Sybase Adaptive Server Anywhere NHibernate.Dialect.SybaseAnywhereDialect  
Microsoft SQL Server 2000 NHibernate.Dialect.MsSql2000Dialect  
Microsoft SQL Server 2005 NHibernate.Dialect.MsSql2005Dialect  
Microsoft SQL Server 2005 Everywhere Edition NHibernate.Dialect.MsSqlCeDialect  
Microsoft SQL Server 7 NHibernate.Dialect.MsSql7Dialect  
Firebird NHibernate.Dialect.FirebirdDialect driver_class設置為 NHibernate.Driver.FirebirdClientDriver啟用Firebird provider for .NET 2.0。
SQLite NHibernate.Dialect.SQLiteDialect driver_class設置為NHibernate.Driver.SQLite20Driver啟用System.Data.SQLite provider for .NET 2.0。
Ingres 3.0 NHibernate.Dialect.IngresDialect   

三、NHibernate提供的Ado.net屬性

屬性名 用途
connection.provider_class 實現IConnectionProvider接口的類型。

例如: (如果是NHibernate內部的IConnectionProvider實現類)full.classname.of.ConnectionProvider,(如果是自定義的NHibernate外部的IConnectionProvider實現類 )full.classname.of.ConnectionProvider, assembly

connection.driver_class 如果使用DriverConnectionProvider,實現IDriver接口的類型。

(如果是NHibernate內部的實現的IDriver類型)full.classname.of.Driver (如果是自定義的NHibernate外部的IDriver實現類 )full.classname.of.Driver, assembly

這個配置通常是不需要配置的,如果設置好了hibernate.dialect一般會自動選好對應的IDriver。 詳細的dialect與IDriver的默認對應關系可以查看API文檔。

connection.connection_string 數據庫連接字符串
connection.connection_string_name 數據庫連接字符串名稱(定義在.Net配置文件<connectionStrings>配置節里面的連接字符串名。
connection.isolation ADO.NET事務隔離級別, 查看System.Data.IsolationLevel類來了解各個值的具體意義, 但請注意多數數據庫都不支持所有的隔離級別.

例如: Chaos, ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Unspecified

connection.release_mode 指定ADO.NET何時釋放數據庫連接。

例如: auto (默認) | on_close | after_transaction

注意,這些設置僅對通過ISessionFactory.OpenSession得到的ISession起作用。對於通過ISessionFactory.GetCurrentSession得到的ISession, 所配置的ICurrentSessionContext實現控制這些ISession的連接釋放模式。 

command_timeout 指定NHibernate生成的IDbCommands對象的超時時間。 
adonet.batch_size 指定用ADO.Net的批量更新的數量,默認設置為0(不啟用該功能)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM