<?xml version="1.0" encoding="utf-8" ?>
<!-- 注意objects节点需要引用命名空间xmlns:d="http://www.springframework.net/database" -->
<objects xmlns="http://www.springframework.net"
xmlns:db="http://www.springframework.net/database">
<!--spring集合nHibernate
NH1:定义数据库链接对象dbProvider(数据提供者)
注意:这里的db:为命名空间前缀,与objects里的xmlns:db这里的db对应。
<db:dbProvider id="DbProvider"
provider="SqlServer-2.0"
connectionString="Data Source=./SQLExpress;Integrated Security=true;User Instance=true;AttachDBFilename=|DataDirectory|/Northwnd.mdf"/>
-->
<object id="DbProvider" type="Spring.Data.Common.DbProviderFactoryObject,Spring.Data">
<property name="Provider" value="SqlServer-2.0"/>
<property name="ConnectionString" value="server=(local);user id=sa;pwd=11;database=Northwind"/>
</object>
<!--
Provider名称和对应的数据库如下所示。
SqlServer-1.1:Microsoft SQL Server,provider V1.0.5000.0,用于.NET框架V1.1。
SqlServer-2.0(System.Data.SqlClient的别名):Microsoft SQL Server,provider V2.0.0.0,用于.NET框架V2.0。
OleDb-1.1:OleDb,provider V1.0.5000.0,用于.NET框架V1.1。
OleDb-2.0(System.Data.OleDb的别名):OleDb,provider V2.0.0.0,用于.NET框架V2.0。
OracleClient-2.0(System.Data.OracleClient的别名):Oracle,Microsoft provider V2.0.0.0。
OracleODP-2.0(System.DataAccess.Client的别名):Oracle, Oracle provider V2.102.2.20。
MySql:MySQL, MySQL provider 1.0.7.3007(按:Spring.NET的当前版本(1.1 Preview3)需要MySqlConnector 1.0.7.30072,您可以从MySql的网站上单独下载,当然您也可以修改Spring.Data以使用1.08 RC或5.02beta版。)
-->
<!-- NH2:SessionFactory配置中,指明需要环境映射的程序集名称,
通俗说法是:哪些层会在集成环境中,被直接引用?
-->
<object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate12">
<property name="DbProvider" ref="DbProvider"/>
<!-- NHibernate的hbm.xml配置文件的程序集名称 -->
<property name="MappingAssemblies">
<list>
<value>Spring.Northwind.Dao.NHibernate</value>
</list>
</property>
<!--
HibernateProperties节中,可以指定调试时是否显示生成的sql语句。
同时,能配置缓存事宜:此处用到的是NHibernate.Caches.SysCache。
-->
<property name="HibernateProperties">
<dictionary>
<entry key="hibernate.connection.provider"
value="NHibernate.Connection.DriverConnectionProvider" />
<entry key="hibernate.dialect"
value="NHibernate.Dialect.MsSql2000Dialect" />
<entry key="hibernate.connection.driver_class"
value="NHibernate.Driver.SqlClientDriver" />
<entry key="show_sql" value="false" />
<entry key="hibernate.query.factory_class"
value="NHibernate.Hql.Classic.ClassicQueryTranslatorFactory" />
<entry key="relativeExpiration" value="5" />
</dictionary>
</property>
<property name="ExposeTransactionAwareSessionFactory" value="true" />
</object>
<!-- NH3:事务管理器 -->
<object id="HibernateTransactionManager"
type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate12">
<property name="DbProvider" ref="DbProvider" />
<property name="SessionFactory" ref="NHibernateSessionFactory" />
</object>
<!-- NH4:事务拦截器 -->
<object id="TransactionInterceptor"
type="Spring.Transaction.Interceptor.TransactionInterceptor, Spring.Data">
<property name="TransactionManager" ref="HibernateTransactionManager" />
<property name="TransactionAttributeSource">
<object type="Spring.Transaction.Interceptor.AttributesTransactionAttributeSource, Spring.Data" />
</property>
</object>
<!-- NH5:nHibernate的模板
既nHibernate项目已经为开发者写好了一套通用的方法,
能便捷的操作数据库,此处将SessionFactory植入引用即能让它工作起来。
-->
<object id="HibernateTemplate" type="Spring.Data.NHibernate.HibernateTemplate">
<property name="SessionFactory" ref="NHibernateSessionFactory" />
<property name="TemplateFlushMode" value="Auto" />
<property name="CacheQueries" value="true" />
</object>
</objects>