NHibernate的配置选项

Hibernate和JPA的Dialect方言基础 在开发过程中,大多数开发者都会使用Hibernate或者JPA来处理持久层数据库访问。通过配置对应的数据库方言Dialect,可以很好地解决不同数据库之间的细节差异,让开发者更专注于业务逻辑的实现,而不用过多关注相关底层细节。这样一来,开发者可以更高效地完成项目开发,提高开发效率。Hibernate和JPA的使用,不仅简化了数据库访问的操作,还提供了更高的灵活性和可扩展性,使开发工作变得更加轻松和便捷。 阅读详情

整理的一些NHibernate的配置选项

NHibernate ADO.NET 属性

属性名用途
hibernate.connection.provider_class 定制IConnectionProvider的类型.

例如:full.classname.of.ConnectionProvider (如果提供者创建在NHibernate中), 或者 full.classname.of.ConnectionProvider, assembly (如果使用一个自定义的IConnectionProvider接口的实现,它不属于NHibernate)。

hibernate.connection.driver_class 定制IDriver的类型.

full.classname.of.Driver (如果驱动类创建在NHibernate中), 或者 full.classname.of.Driver, assembly (如果使用一个自定义IDriver接口的实现,它不属于NHibernate)。

hibernate.connection.connection_string 用来获得连接的连接字符串.
hibernate.connection.isolation 设置事务隔离级别. 请检查 System.Data.IsolationLevel 来得到取值的具体意义并且查看数据库文档以确保级别是被支持的。

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

下面是一个在web.config文件中指定连接属性的例子:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<configSections>
		<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System,
					Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
		<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
	</configSections>
	
	<nhibernate>
		<add 
			key="hibernate.connection.provider"          
			value="NHibernate.Connection.DriverConnectionProvider" 
		/>
		<add 
			key="hibernate.connection.driver_class"          
			value="NHibernate.Driver.SqlClientDriver" 
		/>
		<add 
			key="hibernate.connection.connection_string" 
			value="Server=127.0.0.1;Initial Catalog=thedatabase;Integrated Security=SSPI" 
		/>
		<add 
			key="hibernate.connection.isolation"
			value="ReadCommitted"
		/>
		<add 
			key="hibernate.dialect"                      
			value="NHibernate.Dialect.MsSql2000Dialect" 
		/>
		
	</nhibernate>
	
	<!-- log4net (required by NHibernate) and other app specific config follows -->
</configuration>
 

可选配置属性

下面是一些在运行时可以改变NHibernate行为的其他配置。所有这些都是可选的,也有合理的默认值。

表2.2 NHibernate 配置属性

属性名用途
hibernate.dialect NHibernate方言(Dialect)的类名 - 可以让NHibernate使用某些特定的数据库平台的特性

例如: full.classname.of.Dialect(如果方言创建在NHibernate中), 或者full.classname.of.Dialect, assembly (如果使用一个自定义的方言的实现,它不属于NHibernate)。

hibernate.default_schema 在生成的SQL中,scheml/tablespace的全限定名.

例如: SCHEMA_NAME

hibernate.prepare_sql

是否准备sql语句

例如: true | false

hibernate.session_factory_name SessionFactory被创建后将自动绑定这个名称.

例如: some.name

hibernate.use_outer_join 允许使用外连接抓取。

例如:true | false

hibernate.cache.provider_class 指定一个自定义的CacheProvider缓存提供者的类名

例如: full.classname.of.CacheProvider(如果ICacheProvider创建在NHibernate中), 或full.classname.of.CacheProvider, assembly(如果使用一个自定义的ICacheProvider,它不属于NHibernate)。

hibernate.query.substitutions 把NHibernate查询中的一些短语替换为SQL短语(比如说短语可能是函数或者字符)。

例如: hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC

SQL 方言 (SQL Dialects)

你总是可以为你的数据库设置一个hibernate.dialect方言,它是NHibernate.Dialect.Dialect 的一个子类。如果你不需要使用基于native或者sequence的主键自动生成算法,或者悲观锁定(使用ISession.Lock() 或者 IQuery.SetLockMode())的话,方言就可以不必指定。然而,假若你指定了一个方言,Hibernate会为上面列出的一些属性使用特殊默认值,省得你手工指定它们。

表2.3 NHibernate SQL 方言 (hibernate.dialect)

RDBMS方言
DB2NHibernate.Dialect.DB2Dialect
PostgreSQLNHibernate.Dialect.PostgreSQLDialect
MySQLNHibernate.Dialect.MySQLDialect
Oracle (any version)NHibernate.Dialect.OracleDialect
Oracle 9/10gNHibernate.Dialect.Oracle9Dialect
SybaseNHibernate.Dialect.SybaseDialect
Microsoft SQL Server 2000NHibernate.Dialect.MsSql2000Dialect
Microsoft SQL Server 7NHibernate.Dialect.MsSql7Dialect
FirebirdNHibernate.Dialect.FirebirdDialect

外连接抓取(Outer Join Fetching )

如果你的数据库支持ANSI或者Oracle风格的外连接,外连接抓取可能提高性能,因为可以限制和数据库交互的数量(代价是数据库自身进行了更多的工作)。外连接抓取允许你在一个SELECT语句中就可以得到一个由多对一或者一对一连接构成的对象图。

默认情况下,抓取在叶对象,拥有代理的对象或者产生对自身的引用时终止。

对一个特定关联来说,通过在XML映射文件中设置outer-join属性可以控制是否开启抓取功能。

设置hibernate.use_outer_join为false将禁用全局的外连接抓取.设置为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中把短语true和 false替换成整数值。

hibernate.query.substitutions toLowercase=LOWER

这可以让你重新命名SQL的LOWER 函数

华三R4900 G5服务器实战:用PMC P460-B4阵列卡配置RAID1+RAID6,并搞定CentOS 7.9安装(含热备盘设置) 本文详细解析了在华三R4900 G5服务器上使用PMC P460-B4阵列卡配置RAID1+RAID6混合阵列的全过程,包括热备盘设置和CentOS 7.9系统安装。通过实战步骤和性能优化建议,帮助企业IT人员高效部署高可用存储方案,特别适合需要数据冗余和系统稳定性的企业级应用场景。 阅读详情

相关推荐

别再手动调时间了!用Windows自带的tzutil命令,1分钟搞定时区错误

本文介绍了如何使用Windows自带的tzutil命令快速解决时区错误问题。通过简单的命令行操作,用户可以一键切换时区、查看全球时区代码库,并实现自动化时区同步。相比传统GUI设置,tzutil更可靠且高效,特别适合企业环境批量部署。

weixin_42531494的博客 314

Hibernate的具体配置(转)(自己收藏)

Hibernate配置文件可以有两种格式,一种是 hibernate.properties ,另一种是 hibernate.cfg.xml  后者稍微方便一些,当增加hbm映射文件的时候,可以直接在 hibernate.cfg.xml 里面增加,不必像 hibernate.properties 必须在初始化代码中加入。 但不管怎么说,两种的配置项都是一样的,下面详细介绍: 在Hibernate的s

4313

硬件压力测试工具使用方法

B, --bind host# 绑定到主机的多个地址中的一个。当客户端到服务器端的测试结束时,服务器端通过-l选项指定的端口(或默认为客户端连接到服务器端的端口),反向连接至客户端。-c, --client host#如果Iperf运行在服务器模式,并且用-c参数指定一个主机,那么Iperf将只接受指定主机的连接。-C, --compatibility# 与低版本的Iperf使用时,可以使用兼容模式。-b, --bandwidth #[KM] UDP模式使用的带宽,单位bits/sec。

weixin_53303772的博客 8217

hibernate 二级缓存配置

hibernate 二级缓存配置 1.配置hbm.xml  在class节点下面添加 (读写) 或者  (只读)  如:                                      .....        2.配置spring文件  //打开hibernate二级缓存  hibernate.cache.use_sencond

lijunlinlijunlin的专栏 774

看我如何用kali实时截获隔壁"小姐姐"的上网隐私(结尾有彩蛋)

看我如何用kali实时截获隔壁&amp;amp;amp;quot;小姐姐&amp;amp;amp;quot;的手机图片等信息(结尾有彩蛋哦) 首先圈下重点:《刑法》第二百八十五条 【非法侵入计算机信息系统罪;非法获取计算机信息系统数据、非法控制计算机信息系统罪】违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或...

SoulCat 2万+

BLDC&PMSM电机控制器硬件设计工程(八)72V 10kW电机控制器原理图工程及库文件

电机控制器基本需求:接口类型;MCU平台;通信接口;供电;信号采集;信号输出;功率;EMC或者认证需求。

小幽余生不加糖 373

Hibernate5的基本使用

Hibernate入门快速了解、简单使用

hkdgxyj的博客 1168

Qemu开发ARM篇-3、qemu运行uboot演示

在上一篇文章中,我们搭建了交叉编译工具链,并成功进行了uboot的交叉编译,在该篇中,我们将演示如何利用qemu运行上一篇中交叉编译的uboot程序。

sinat_33909696的博客 1211

Nhibernate (2) 应用入门

下面把过程简单的说一下,新技术的最大门槛不是复杂,而是能否跨进这个门,高人们可以略过了。但是我在最初的时候费了好大周折,用了一天时间,本文希望给后人个方便,少走弯路。1、  新建工程 WindowsApplication22、  把该引用的都引用上>(1)       HashCodeProvider(2)       Iesi.Collections(3)    

liuyuer的专栏 1万+

Qt5+Ros+GUI界面

在之前建立的工程的基础上添加一个gui界面。 在ros包中新建一个文件夹,名字叫gui 右击gui文件夹添加一个文件,选择Qt->Qt设计师界面类 选择MainWindow 选择下一步 最后在gui中生成三个文件 mainwindow.cpp、mainwindow.h、mainwindow.ui 但此时,这些新创建的文件和原本的ros工程还没建立任何关系,只是目录下多出了几个文件而已...

二毛的博客 8845

SerDes系列之如何选择AC耦合电容

交流耦合电容用于隔离PCB互连时的直流分量(Common-mode voltage),同时传递交流分量(Voltage swing),其作用类似于一个高通滤波器,但是,如果电容容值选取不当,使用过程中会产生信号质量问题,典型的应用场景:当包含相同的长串1或0的NRZ数据应用于该高通滤波器时,会发生低频电压跌落,导致低频模式相关抖动(PDJ)。

一只豌豆象的博客 2351

一、NHibernate配置所支持的属性

属性名用途 dialect 设置NHibernate的Dialect类名 - 允许NHibernate针对特定的关系数据库生成优化的SQL 可用值:full.classname.of.Dialect, assembly default_schema 在生成的SQL中, 将给定的schema/tablespace附加于非全限定名的表名上. ...

dianjin3567的博客 86

【GameFramework框架内置模块】17、声音(Sound)

声音(Sound)模块是管理音频的模块,比如播放、停止、修改音量等,支持淡入淡出、AudioMixer等高级设置。声音(Sound)的配置面板如下所示:所有的声音统一按照组来分,可以根据需要添加或者溢出组,声音组可以配置Agent的数量和音量等。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 1912

c#通过linq方式加载xml_C# 数据操作系列 - 12 NHibernate的增删改查

0. 前言 上一篇《C# 数据操作系列 - 11 NHibernate 配置和结构介绍》 介绍了Nhibernate里的配置内容。这一篇将带领大家了解一下如何使用NHIbernate。之前提到NHibernate继承了Hibernate的一些传统:使用XML文件进行配置,这一点也是备受争议。不过,有社区爱好者开发了一个名为《Fluent NHibernate》的项目,用来支持NHibernate的...

weixin_39516865的博客 206

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

NHibernate 配置属性

 属性名用途hibernate.dialect NHibernate方言(Dialect)的类名 - 可以让NHibernate使用某些特定的数据库平台的特性例如: full.classname.of.Dialect(如果方言创建在NHibernate中), 或者full.classname.of.Dialect, assembly (如果使用一个自定义

happy__xiaoyu的专栏 1364

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

[NHibernate]一对多关系(级联删除,级联添加)

[NHibernate]一对多关系(级联删除,级联添加)在前面的文章中,我们只使用了一个Customer类进行举例,而在客户、订单、产品中它们的关系,咱们并没有涉及,比如一个客户可以有一个或者多个订单,在数据库中变现为“主外键关系”,有时也喜欢称为“父子关系”。那么就让我们一起学习,在nhibernate中,是如何处理这种关系的吧? 文档与系列文章

活着 7931

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

NHibernate之配置文件属性说明

一、NHibernate配置所支持的属性 属性名 用途 dialect 设置NHibernate的Dialect类名 - 允许NHibernate针对特定的关系数据库生成优化的SQL 可用值: full.classname.of.Dialect, assembly default_schema 在生成的SQL中, 将给定的schema/tablespace附加于非全限定名...

weixin_30929195的博客 99

NHibernate3剖析:Configuration篇之SessionFactory fluent配置

本节内容 系列引入 概览 流配置(fluent-configuration) SessionFactory基本设置(IFluentSessionFactoryConfiguration) 数据库集成配置(IDbIntegrationConfiguration) 缓存配置(ICacheConfiguration) 代理配置(IProxyConfigura...

weixin_33905756的博客 174

NHibernate *.hbm.xml 文档

# class <class name="ClassName" (1) table="tableName" (2) discriminator-value="discriminator_value" (3) ...

weixin_30376323的博客 190

NHibernate官方文档中文版--ISessionFactory的配置(ISessionFactory Configuration)

由于NHibernate是被设计应用在许多不同环境中的,因此它存在很多配置参数。幸运的是,这些参数大多都有合理的默认值,而且NHibernate发布的时候伴随着一个App.config 例子(可在src\NHibernate.Test找到),这个例子已经包含了了很多配置信息。你通常只要把这个文件放如你的项目中然后定制它就行了。 编程式配置 一个NHibernate.Cfg.Configurat...

weixin_30662849的博客 389

NHibernate主键生成方式

  User.hbm.xml &lt;?xml version="1.0" encoding="utf-8" ?&gt;&lt;hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"&gt;  &lt;class name="PreordainSolution.PreordainModel.User, PreordainSolution..

weixin_34409741的博客 83

Using MemCached with NHibernate

There's nothing says how to use MemCached in NHibernate, here is the steps to approach this. It's very easy in fact. 1. Install and start MemCached. http://jehiah.cz/projects/memcached-win32/. ...

weixin_34014555的博客 62

[NHibernate]缓存(NHibernate.Caches)

系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate]O/R Mapping基础 [NHibernate]集合类(Collections)映射 [NHibernate]关联映射 [NHibernate]Parent/Child 什么是...

weixin_34007879的博客 94

[NHibernate]Parent/Child

系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate]O/R Mapping基础 [NHibernate]集合类(Collections)映射  [NHibernate]关联映射 引言  刚刚接触NHibernate的人大多是从父子关系...

weixin_34195142的博客 132
上一篇: 在c#中实现窗体上回车键代替TAB键
下一篇: NHibernate体系结构
txchen
博客等级 码龄24年 7粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值