SSH.net之Data Access Objects(DAO)

來源:互聯網
上載者:User

標籤:style   blog   http   io   ar   color   os   使用   sp   

一、建立一個類庫,命名為:DAO

二、建立介面:IRepository

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Repository{    public interface IRepository<T>    {        void Delete(T entity);        T Get(object id);        object Save(T entity);        void Update(T entity);    }}

實現該介面

using System;using System.Collections.Generic;using System.Linq;using System.Text;using Spring.Data.NHibernate.Generic.Support;//引用Spring.Data.NHibernate21.dllnamespace Repository{    public class NHibernateRepository<T> : HibernateDaoSupport,IRepository<T>    {        public void Delete(T entity)        {            this.HibernateTemplate.Delete(entity);        }        public T Get(object id)        {            return this.HibernateTemplate.Get<T>(id);        }        public object Save(T entity)        {            return this.HibernateTemplate.Save(entity);        }        public void Update(T entity)        {            this.HibernateTemplate.Update(entity);        }    }}

在這裡,同樣繼承了HibernateDaoSupport類,後面設定檔中將使用該類中的HibernateTemplate屬性。該類的引用需要引入Spring.Data.NHibernate21.dll檔案。

三、設定檔

<?xml version="1.0" encoding="utf-8" ?><objects xmlns="http://www.springframework.net"         xmlns:db="http://www.springframework.net/database">    <!-- 用以我們在其它的應用程式中,配置資料訪問        如:我們在MVCDemo項目中添加資料庫連接,則這樣配置:        <configuration>            <databaseSettings>                <add key="db.datasource" value="LIPPOR-PC\LIPPOR"/>                <add key="db.user" value="sa"/>                <add key="db.password" value="123"/>                <add key="db.database" value="SpringNetDB"/>            </databaseSettings>        </configuration>        就可以將資料傳遞過來    -->    <object type="Spring.Objects.Factory.Config.PropertyPlaceholderConfigurer, Spring.Core">        <property name="ConfigSections" value="databaseSettings"/>    </object>    <!-- 資料庫和Nhibernate的相關配置 -->    <db:provider id="DbProvider" provider="SqlServer-2.0"                 connectionString="Server=${db.datasource};database=${db.database};uid=${db.user};pwd=${db.password};"/>    <!--SessionFactory對象,其中包括一些比較重要的屬性 -->    <object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate21">        <!-- 關於資料庫連接的配置,直接使用 DbProvider 中的設定,這樣,不需要為 Hibernate 再提供串連串和驅動 -->        <property name="DbProvider" ref="DbProvider"/>        <!-- 包含有對應檔的程式集,需要分析的hbm程式集名稱 -->        <property name="MappingAssemblies">            <list>                <value>Model</value>            </list>        </property>        <property name="HibernateProperties">            <dictionary>                <entry key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>                <entry key="dialect" value="NHibernate.Dialect.MsSql2008Dialect"/>                <entry key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>                <entry key="use_outer_join" value="true"/>                <entry key="show_sql" value="false"/>                <!--自動建表(反向映射)-->                <entry key="hbm2ddl.auto" value="update"/>                <entry key="adonet.batch_size" value="10"/>                <entry key="command_timeout" value="60"/>                <!--顯式啟用二級緩衝-->                <entry key="cache.use_second_level_cache" value="true"/>                <!--啟動查詢快取-->                <entry key="cache.use_query_cache" value="false"/>                <entry key="query.substitutions" value="true 1, false 0, yes ‘Y‘, no ‘N"/>                <entry key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"/>            </dictionary>        </property>        <!-- 與 Spring 的聲明式事務整合 -->        <property name="ExposeTransactionAwareSessionFactory" value="true" />    </object>    <object id="HibernateTemplate" type="Spring.Data.NHibernate.Generic.HibernateTemplate">        <property name="SessionFactory" ref="NHibernateSessionFactory" />        <property name="TemplateFlushMode" value="Auto" />        <property name="CacheQueries" value="true" />    </object>    <object id="dao.users" type="Repository.NHibernateRepository&lt;Model.Users>, Repository">        <property name="HibernateTemplate" ref="HibernateTemplate"/>    </object>    <object id="dao.roles" type="Repository.NHibernateRepository&lt;Model.Roles>, Repository">        <property name="HibernateTemplate" ref="HibernateTemplate"/>    </object>    <object id="dao.permission" type="Repository.NHibernateRepository&lt;Model.Permission>, Repository">        <property name="HibernateTemplate" ref="HibernateTemplate"/>    </object></objects>

 

 

劉東老師的播客裡有這麼段注釋:

 “NHibernate中的Session控製取決於SessionFactory,Spring.NET提供了LocalSessionFactoryObject類來統一管理SessionFactory。其中MappingAssemblies屬性為實體程式集的名稱,可以填寫多個名稱。HibernateProperties為NHibernate的配置,dialect屬性為資料庫的方言,因為是SQL server 2K資料庫,所以使用NHibernate.Dialect.MsSql2000Dialect 。proxyfactory.factory_class屬性為消極式載入的代理類驅動,在NHibernate 2.1版中必須配置。hbm2ddl.auto屬性為反向建立映射表的配置,我們配置為update後,NHibernate會幫我們自動根據實體的結構產生資料庫中的表。

最後,設定設定檔的屬性:

 

SSH.net之Data Access Objects(DAO)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.