NHibernate配置详解
来源:互联网 发布:蜘蛛侠巅峰能力数据 编辑:程序博客网 时间:2024/06/05 10:27
一、 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(不启用该功能)。
proxyfactory.factory_class
代理工厂配置。用于指定是哪个中间件提供的延迟加载代理
二、可选的配置属性
属性名
用途
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
query.substitutions true=1, false=0 将导致符号true和false在生成的SQL中被翻译成整数常量
show_sql
输出所有SQL语句到控制台.
可用值: true | false
hbm2ddl.auto
在ISessionFactory创建时,自动检查数据库结构,或者将数据库schema的DDL导出到数据库。
使用 create-drop时,在显式关闭ISessionFactory时,将drop掉数据库schema。
可用值: create | create-drop | update
use_proxy_validator
是否启用验证接口或者是类是否可以使用代理,默认开启。
(检查实体类的属性或者是方法是否被设置为Virtual)
可用值: true | false
transaction.factory_class
自定义ITransactionFactory的实现,默认为NHibernate内建的AdoNetTransactionFactory。
可用值: classname.of.TransactionFactory, assembly
三、配置示例
<?xml version="1.0" encoding="utf-8"?><!-- This template was written to work with NHibernate.Test.Copy the template to your NHibernate.Test project folder and rename it in hibernate.cfg.xml and change it for your own use before compile tests in VisualStudio.--><!-- This is the System.Data.dll provider for SQL Server --><hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" ><session-factory name="NHibernate.NHibernateDomain"><property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property><property name="connection.connection_string"> Server=172.16.0.175;database=NHibernateDemo;uid=sa;pwd=sa123456!; </property><property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property> <property name="show_sql">true</property> <!--数据库操作的方式--当配置了此项时可实现根据实体类自动创建数据库表--项目发布后此项应该注释掉或删除以保证数据库表不被意外重建--> <!-- validate:加载hibernate时,验证创建数据库表结构 update:表示自动根据model对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表;如果表里缺少列,则自动添加列。 create:启动hibernate时,自动删除原来的表,新建所有的表,所以每次启动后的以前数据都会丢失。 create-drop:启动hibernate时,自动创建表,程序关闭时,自动把相应的表都删除。所以程序结束时,表和数据也不会再存在。 --> <!--<property name="hbm2ddl.auto">update</property>--> <property name="hbm2ddl.auto">create</property> <!--定义部分值在数据库表中的对应值或表示方式--> <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property> <!--找到对应的实体对象--> <mapping assembly="NHibernateDomain" namespace="NHibernateDomain"/> </session-factory></hibernate-configuration>
参考文章:http://www.cnblogs.com/GoodHelper/archive/2011/02/15/nhiberante_02.html
- NHibernate配置详解
- NHibernate详解
- nhibernate配置
- NHibernate 配置
- Nhibernate配置
- Nhibernate 配置
- Nhibernate详解一
- nhibernate详解二
- NHibernate的配置选项
- NHibernate的灵活配置
- NHibernate的灵活配置
- NHibernate的灵活配置
- NHibernate 2.0 配置
- NHibernate 配置属性
- NHibernate的灵活配置
- [转]NHibernate配置方法
- NHibernate配置入门
- NHibernate配置入门
- 必要なスキル
- Java多线程复习与巩固(一)--线程基本使用
- oracle性能调优之--Oracle硬解析与软解析
- Java中继承thread类与实现Runnable接口区别的简要的分析
- ASC转英文及数字
- NHibernate配置详解
- ddz代码分析
- Linux部署实时应用监控平台CAT
- 限制input 数字和长度
- ubuntu截图
- 简单的Spring+CXF例子
- HUST1718(ac自动机)
- HTTPS
- 解决"应用程序无法启动,因为应用程序的并行配置不正确"问题