且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

C#.NET编程----Spring.NET & NHibernate整合

更新时间:2022-09-15 11:09:19

添加Spring.NET为NHibernate的容器配置
现在就可以在Spring.NET的容器中添加Nhibernate的配置了。
如下Spring_nhibernate.xml:
<?xml version="1.0" encoding="utf-8" ?> 
<objects xmlns='http://www.springframework.net'>

<!-- NHibernate初始化的 -->
<object id="DbProvider" type="OKEC.Sample.Spring.SQLProvider,SpringNHibernateSample">
    <property name="ConnectionString" value="Data Source=192.168.88.15;Database=liluhua;User ID=sa;Password=sa;Trusted_Connection=False"/>
</object>

<object id="SessionFactory" 
type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate">
    <property name="DbProvider" ref="DbProvider"/>
    <property name="MappingAssemblies">
        <list>
            <value>SpringNhibernateSample</value>
        </list>
    </property>
    <property name="HibernateProperties">
        <dictionary>
            <entry 
key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/> 
            <!--entry 
key="hibernate.connection.connection_string" value="Data Source=192.168.188.188;Database=Test;User ID=satest;Password=satest;Trusted_Connection=False"/--> 
            <entry key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect"/> 
            <entry 
key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>  
        </dictionary>
    </property> 
</object> 

<object id="HibernateTransactionManager" type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate"> 
    <property name="DbProvider" ref="DbProvider"/>
    <property name="sessionFactory" ref="SessionFactory"/>
</object>

<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>

<!-- 以下是业务相关的 -->
<object id="UserDao"
type="OKEC.Sample.NHibernate.NHibernateTest.UserDao, SpringNHibernateSample">
        <property name="SessionFactory" ref="SessionFactory"/>
</object>
</objects>
我们现在对上面的加以细解:
下面这几行,是配置Nhibernate所需的数据库的DbProvider
<object id="DbProvider" type="OKEC.Sample.Spring.SQLProvider,SpringNHibernateSample">
    <property name="ConnectionString" value="Data Source=192.168.88.15;Database=liluhua;User ID=sa;Password=sa;Trusted_Connection=False"/>
</object>


下面的是对Nhibernate的SessionFactory的封装的对像的定义
<object id="SessionFactory" 
type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate">
    <property name="DbProvider" ref="DbProvider"/>
    <property name="MappingAssemblies">
        <list>
            <value>SpringNhibernateSample</value>
        </list>
    </property>
    <property name="HibernateProperties">
        <dictionary>
            <entry key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/> 
            <!--entry key="hibernate.connection.connection_string" value="Data Source=192.168.188.188;Database=Test;User ID=satest;Password=satest;Trusted_Connection=False"/--> 
            <entry key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect"/> 
            <entry key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>  
        </dictionary>
    </property> 
</object>


下面的是对Nhibernate中的Transaction封装对像
<object id="HibernateTransactionManager" type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate"> 
    <property name="DbProvider" ref="DbProvider"/>
    <property name="sessionFactory" ref="SessionFactory"/>
</object>

<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>


下面是对NHibernate业务操作对像的定义

<object id="UserDao" 
type="OKEC.Sample.NHibernate.NHibernateTest.UserDao, SpringNHibernateSample">
        <property name="SessionFactory" ref="SessionFactory"/>

</object>



本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2010/12/20/1911847.html,如需转载请自行联系原作者