NHibernate是一个面向.NET环境的对象/关系数据库映射工具(ORM)。用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。NHibernate可以单独使用,Spring.Net集成NHibernate之后可以减少不少配置,其中包括数据库配置文件的映射。
配置如下:
配置文件
OrmService.xml
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:db="http://www.springframework.net/database"
default-autowire="byName">
<!-- 数据库和Nhibernate的相关配置 -->
<db:provider id="DbProvider"
provider="System.Data.SqlClient"
connectionString="Data Source=${db.datasource};Database=${db.database};User Id=${db.user};Password=${db.password};"/>
<object id="NHibernateSessionFactory" type="SessionFactory.LocalSessionFactoryObject,SessionFactory">
<property name="DbProvider" ref="DbProvider"/>
<property name="EntityAssemblyNames">
<list>
<value>Entity</value>
</list>
</property>
<!--<property name="MappingAssemblies">
<list>
<value>Entity</value>
</list>
</property>-->
<property name="HibernateProperties">
<dictionary>
<entry key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
<entry key="dialect" value="NHibernate.Dialect.MsSql2005Dialect"/>
<entry key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>
<entry key="show_sql" value="false" />
<entry key="adonet.batch_size" value="50"/>
<entry key="command_timeout" value="300"/>
<entry key="query.substitutions" value="true 1, false 0, yes 'Y', no 'N"/>
<!--Nhibernate-->
<entry key="hibernate.dialect" value="NHibernate.Dialect.MsSql2005Dialect" />
<entry key="hibernate.show_sql" value="false" />
<entry key="hibernate.format_sql" value="false"/>
<!--<entry key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle" />-->
<!--二级缓存-->
<entry key="cache.provider_class" value="NHibernate.Caches.MemCache.MemCacheProvider,NHibernate.Caches.MemCache" />
<!--<entry key="cache.provider_class" value="NHibernate.Cache.HashtableCacheProvider,NHibernate" />-->
<entry key="cache.use_second_level_cache" value="false" />
<entry key="cache.use_query_cache" value="false" />
<entry key="cache.default_expiration" value="3000" />