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