Spring.NET實用技巧2——NHibernate訪問Oracle資料庫

來源:互聯網
上載者:User

  針對大型系統,往往採用Oracle資料庫。這是因為在大資料量的情況下Oracle的優勢比較明顯,而且能夠部署到非Windows環境下,從而彌補.NET程式跨平台的缺點。但是使用NHibernate訪問Oracle和訪問SQL Server相比來說要略微複雜。

  在使用NHibernate訪問Oracle的過程中,我們需要以下幾個步驟:

  1.下載並安裝Oracle用戶端http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/winsoft.html

  2.確保驅動程式集檔案(System.Data.OracleClient.dll或Oracle.DataAccess.dll)存在。

  3.配置Spring.NET的Spring.Data.NHibernate.LocalSessionFactoryObject對象。

  按照上面的步驟即可訪問Oracle資料庫。在Oracle10G和11G的環境下通過測試。 以下是Spring.Data.NHibernate.LocalSessionFactoryObject對象的配置方式。

  

  Spring.Data.NHibernate.LocalSessionFactoryObject有兩種配置方式:一種是配置HibernateProperties屬性的每個entry節點,另一種是配置ConfigFilenames屬性來從外部匯入hibernate.cfg.xml檔案。

  首先,配置HibernateProperties屬性的代碼為:

NHibernateSessionFactory

<object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate21">
    <property name="DbProvider" ref="DbProvider"/>
    <property name="MappingAssemblies">
      <list>
        <value>Domain</value>
      </list>
    </property>
    <property name="HibernateProperties">
      <dictionary>
        <entry key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
        <entry key="dialect" value="NHibernate.Dialect.Oracle10gDialect"/>
        <entry key="connection.driver_class" value="NHibernate.Driver.OracleClientDriver"/>
        <entry key="use_outer_join" value="true"/>
        <entry key="show_sql" value="true"/>
        <entry key="hbm2ddl.auto" value="update"/>
        <entry key="hibernate.current_session_context_class"
              value="Spring.Data.NHibernate.SpringSessionContext, Spring.Data.NHibernate21"/>
        <entry key="proxyfactory.factory_class" value="NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu"/>
      </dictionary>
    </property>
    <property name="ExposeTransactionAwareSessionFactory" value="true" />
  </object>

 

 

注意的是:connection.driver_class屬性配置為NHibernate.Driver.OracleClientDriver;dialect屬性配置為NHibernate.Dialect.Oracle10gDialect。

資料庫的provider配置為:

  <db:provider id="DbProvider" provider="System.Data.OracleClient"
               connectionString="User ID=system;Password=ld;Data Source=192.168.1.122/ORCL"/>

 

也可以設定provider屬性為:OracleClient-2.0。這樣配置是以微軟提供的System.Data.OracleClient作為驅動。如果要以甲骨文提供的Oracle.DataAccess.dll作為驅動,則在確保引用Oracle.DataAccess.dll程式集的情況下需用修改provider屬性為:OracleODP-2.0,修改connection.driver_class屬性為NHibernate.Driver.OracleDataClientDriver。

 

  其次,配置ConfigFilenames屬性外部匯入hibernate.cfg.xml檔案的代碼如下:

NHibernateSessionFactory

  <object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate21">
    <property name="DbProvider" ref="DbProvider"/>
    <property name="ConfigFilenames">
      <list>
        <value>D:\Config\hibernate.cfg.xml</value>
      </list>
    </property>
    <property name="ExposeTransactionAwareSessionFactory" value="true" />
  </object>

 

 

hibernate.cfg.xml的配置為:

hibernate-configuration

<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
  <session-factory name="WebApp"> 
    <!--<property name="connection.connection_string">
      User ID=system;Password=ld;Data Source=192.168.1.122/ORCL
    </property>-->
    <property name="show_sql">false</property>
    <property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
    <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>
    <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
    <property name="hbm2ddl.auto">update</property>
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
    <mapping assembly="Domain"/>
  </session-factory>
</hibernate-configuration>

 

 

  好了,以上就是我的兩種配置方式。

 

  代碼下載

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.