一、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 TABLE和DROP 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(不啟用該功能)。 |