SSH.net之Service层

一、新建一个项目,命名为:Service

二、添加接口及其实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Model;
namespace Service
{
    public interface IUserService
    {
        object Save(Users entity);
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Model;

namespace Service
{
    public class UserService:IUserService
    {

        public object Save(Users entity)
        {
            throw new NotImplementedException();
        }
    }
}

 

由于用到Model层中Users对象,所以要引入一下项目Model,然后

 1 using Model; 

 二、配置文件

 

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">

    <object id="transactionManager"
          type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate21">
        <property name="DbProvider" ref="DbProvider"/>
        <!--HibernateTransactionManager通过注入sessionfactory.
        然后在得到session,把session包装成SessionHolder(),并通过threadlocal来对象的实现和线程的绑定(threadlocal实现重点)
        最后到线程中的session取得的Transaction-->
        <property name="SessionFactory" ref="NHibernateSessionFactory"/>
    </object>

    <!-- 事务拦截器,激活事务管理器所必须的 -->
    <!-- Spring.net使用TransactionInterceptor声明式事物配置-->
    <object id="transactionInterceptor" type="Spring.Transaction.Interceptor.TransactionInterceptor, Spring.Data">
        <property name="TransactionManager" ref="transactionManager"/>
        <property name="TransactionAttributeSource">
            <object type="Spring.Transaction.Interceptor.AttributesTransactionAttributeSource, Spring.Data"/>
        </property>
    </object>

    <!--设置TransactionProxyFactoryObject事物代理,添加需要拦截的方法-->
    <!--如果你不喜欢使用特性来标注事务([Transaction]),Spring.NET为NHibernate提供的事务代理是 TransactionProxyFactoryObject。-->
    <object id="BaseTransactionManager"  type="Spring.Transaction.Interceptor.TransactionProxyFactoryObject, Spring.Data" abstract="true">
        <!--spring获取hibernate的事物管理-->
        <property name="PlatformTransactionManager" ref="transactionManager"/>
        <property name="TransactionAttributes">
            <name-values>
                <add key="Save*" value="PROPAGATION_REQUIRED"/>
                <!--key属性为Save*,意思是拦截所有以Save开头的方法-->
                <add key="Set*" value="PROPAGATION_REQUIRED"/>
                <add key="Finish*" value="PROPAGATION_REQUIRED"/>
                <add key="Update*" value="PROPAGATION_REQUIRED"/>
                <add key="Delete*" value="PROPAGATION_REQUIRED"/>
                <add key="Add*" value="PROPAGATION_REQUIRED"/>
                <add key="Get*" value="PROPAGATION_SUPPORTS,readOnly"/>
                <add key="Find*" value="PROPAGATION_SUPPORTS,readOnly"/>
                <add key="Load*" value="PROPAGATION_SUPPORTS,readOnly"/>
                <add key="*" value="PROPAGATION_REQUIRED"/>
            </name-values>
        </property>
    </object>

    <!--为rolesService.cs类添加TransactionProxyFactoryObject事物代理-->
    <object id="rolesService" parent="BaseTransactionManager">
        <!--将 TransactionProxyFactoryObject的 Target属性注入业务处理层的类,这样Spring.NET会为该类包装上事务-->
        <property name="Target">
            <object type="Serivce.rolesService,Manager">
                <property name="RolesDAO" ref="dao.roles"/>
            </object>
        </property>
    </object>

    <object id="UsersManager" parent="BaseTransactionManager">
        <property name="Target">
            <object type="Manager.UsersManager,Manager">
                <property name="UsersDAO" ref="dao.users"/>
            </object>
        </property>
    </object>

    <object id="PermissionManager" parent="BaseTransactionManager">
        <property name="Target">
            <object type="Manager.PermissionManager,Manager">
                <property name="PermissionDAO" ref="dao.permission"/>
            </object>
        </property>
    </object>

</objects>

 

 

最后,设置配置文件属性:

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。