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>

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

时间: 2024-12-24 02:32:19

SSH.net之Service层的相关文章

SSH之Hibernate的Dao层和Service层

1.Dao层接口 package com.life.dao; import java.util.List; import java.util.Map; import org.hibernate.Query; public interface IDao<T> { /** * 根据id查找实体 * * @param clazz * @param id * @return */ public T find(Class<T> clazz, int id); public void crea

SSH框架中POJO层, Dao层,Service层, Action层的功能理解

pojo层就是对应的数据库表的实体类(如User类). dao层,一般可以再分为***dao接口和***daoImpl实现类,如userDao接口和userDaoImpl实现类,接口负责定义数据库curd的操作方法,实现类负责具体的实现,即实现Dao接口定义的方法. service层,引用对应的dao层数据库操作,在这里可以编写自己需要的代码(比如简单的判断),也可以再细分为service接口和serviceImpl实现类. action层:引用对应的Service层实现业务逻辑,在这里结合St

[转]JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操作,在这里可以编写自己需要的代码(比如简单的判断).Action层:引用对应的Service层,在这里结合Struts的配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理.以上的Hibernate,Struts,都需要注入到Spring的配置文件中,Spring把这些联系

java中Action层、Service层和Dao层的功能区分

Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DAO只完成增删改查,虽然可以1-n,n-n,1-1关联,模糊.动态.子查询都可以.但是无论多么复杂的查询,dao只是封装增删改查.至于增删查改如何去实现一个功能,dao是不管的. 总结这三者,通过例子来解释: Action像是服务员,顾客点什么菜,菜上给几号桌,都是ta的职责: Service是厨师,ac

DAO层,Service层,Controller层、View层介绍

来自:http://jonsion.javaeye.com/blog/592335 DAO层 DAO 层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此 接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置,以及 有关数据库连接的参数都在Spring的配置文件中进行配置. Service层 Service 层主要负责业

DAO层,Service层,Controller层、View层

DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置. Service层:Service层主要负责业务模块的逻辑应用设计.同样是首先设计接口,再设计其实现的类,接着再Spring的配置文件中配

学习MVC之租房网站(四)-实现Service层并进行单元测试

在上一篇<学习MVC之租房网站(三)-编写Eneity类并创建数据库>中,记录了编写Eneity类并采用CodeFirst的方式创建数据库的过程,接下来就到了Service层的实现了,并且在开始后续工作前,首先进行充分的单元测试. 长久以来,一直为写出很多bug而苦恼,这儿用过单元测试后,惊喜地发现,这不正是保证代码质量的好方法嘛,虽然会耗费额外的时间,但决定以后要把单元测试运用到工作和学习的实践中. 一.实现Service层 1. 为了减少模块.层之间的耦合,在Service层上面增加了IS

ssh Dao与Service的设计与实现

使用UML设计程序 使用 用例图 画出程序的功能模块(小人代表角色,椭圆代表功能) 第一步:画出实体类的关联关系 使用类图设计程序(关键) 单向箭头表示单向关联,没有箭头表示双向关联,线的属性(关联属性) 类的属性和方法一般隐藏 第二步:Dao的设计与实现 BaseDao定义每个Dao都会使用到的通用接口<<Interface>> BaseDaoImpl实现BaseDao的抽象类(用斜体表示抽象,用虚线空心箭头表示实现接口) 每一个实体类都会有一个Dao的实现类(用实现空心箭头表示

032医疗项目-模块三:药品供应商目录模块——Service层和Action层和调试

我们上一篇文章讲了Dao层代码: 这一篇我们讲解Service层和Action层: Service层: 分为接口和实现类,我们主要看实现类:GysemplServiceImpl package yycg.business.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import yycg.business.dao.mapper.Gysypml