NHibernate之配置文件属性说明

标签: nhibernate
606人阅读 评论(0) 收藏 举报
分类:

一、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(不启用该功能)。

 

查看评论

NHibernate开发环境与配置-NHibernate入门到精通系列2

上一篇:NHibernate ORM介绍及优缺点-NHibernate入门到精通系列1中介绍了NHibernate与ORM,读者对其有一个感性的认识。 本节,将继续此系统,介绍:NHibernate...
  • caolijunmingyan
  • caolijunmingyan
  • 2012-09-05 13:39:29
  • 4575

搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (一)搭建你的环境

使用这套框架不是很长时间。但也基本应用了几个项目中了。在此和大家分享一下我是怎样一步一步搭建此框架的。并为初学者提供一个简单的示范。欢迎共同讨论技术问题。【本人纯属菜鸟!不足之处多谅解!】 第一步:...
  • huyanliang
  • huyanliang
  • 2016-07-05 14:42:06
  • 731

ASP.NET中使用Nhibernate

基于上一篇,做了一个网页版的demo,方便以后学习。计划是找一个现有的项目按照自己搭的环境改写一下。 使用ASP.NET Razor 创建新的solution,导入相关引用以及package...
  • awawfwfw
  • awawfwfw
  • 2016-02-28 14:50:24
  • 456

NHibernate性能调优之Lazy与Fetch

在应用开发中ORM框架使用是否得当将直接影响到我们的程序的效率,其中的两个概念: lazy懒加载select N+1问题 在性能调优中起到了至关重要的作用。 在以前我个人混乱的概念里,启用懒加载...
  • colin788
  • colin788
  • 2015-12-10 14:43:40
  • 1398

完成一个MVC+Nhibernate+Jquery

一、最近学习了Jquery-EasyUI框架,结合之前用过的MVC3+Nhibernate做一个信息发布系统,对工作一年半的自己做一个总结吧!(也正好 供初学者学习!) 二、先上截图(系统简介),让...
  • dyllove98
  • dyllove98
  • 2013-07-24 21:00:24
  • 2340

Hibernate 下载、安装和使用

一、下载 Hibernate 下载地址:http://hibernate.org/orm/downloads/
  • hanshileiai
  • hanshileiai
  • 2014-07-16 14:18:11
  • 18772

NHibernate介绍

NHibernate是一个面向.NET环境的针对关系型数据库的对象持久化类库。      NHibernate来源于非常优秀的基于Java的Hibernate关系型持久化工具。 NHibernate从...
  • fenghu89
  • fenghu89
  • 2007-10-14 10:43:00
  • 527

[NHibernate]Nhibernate如何映射sqlserver中image字段

概述 有这样一个需求需要管理企业内网的信息,包括图标和链接。考虑到图标也不是很大所以就将图片直接保存在数据库中了。 但是用到Nhibernate,如何映射呢? Table 5.5. Larg...
  • hr541659660
  • hr541659660
  • 2017-08-19 18:21:20
  • 192

NHibernate---Configuration3种常见配置

Configuration3种常见配置: Configuration config = new Configuration();这种配置方法将会到应用程序配置文件(App.Config,Web.Con...
  • DBCOLOR
  • DBCOLOR
  • 2008-01-23 19:54:00
  • 2179

.Net——Nhibernate实现CRUD

最近用到SSH(spring+struct+hibernate),从java里面的hibernate,不自觉联系到.net里面的Nhibernate。        下面来简单聊下Nhibernate...
  • lhc2207221755
  • lhc2207221755
  • 2015-09-24 12:34:17
  • 1638
    个人资料
    持之以恒
    等级:
    访问量: 55万+
    积分: 6288
    排名: 4890
    最新评论