ASP.NET&Spring.NET&NHibernate最佳实践(四)——第3章人事子系统(1)
2010-05-26 14:27
417 查看
人事子系统分层结构为:领域模型层(DomainModel)——数据访问层(Dao)——服务层(Sevice)——表示层(Web),在Web页面中采用了ObjectDataSource作为GridView的数据源,并为此增加了一个帮助类。
在数据访问层中充分体现了Spring.NET和NHibernate的无缝集成,只要继承HibernateDaoSupport就能很便捷的使用NHibernate,而不需要很深入了解NHibernate。
3.1. 人事子系统领域模型层(DomainModel)
部门(Dept.cs)
using System;
using System.Collections.Generic;
using System.Text;
namespace Guushuuse.SalaryPrj.HR.DomainModel
员工(Employee.cs)
using System;
using System.Collections.Generic;
using System.Text;
namespace Guushuuse.SalaryPrj.HR.DomainModel
3.2. 人事子系统映射文件(HBM)
Dept.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Guushuuse.SalaryPrj.HR.DomainModel.Dept, Guushuuse.SalaryPrj.HR" table="t_depts">
<id name="ID" column="dept_id" type="Int32" unsaved-value="-1">
<generator class="identity" />
</id>
<property name="Code" column="dept_code" type="String" length="255" not-null="true" />
<property name="Name" column="dept_name" type="String" length="255" not-null="true" />
</class>
</hibernate-mapping>
Employee.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Guushuuse.SalaryPrj.HR.DomainModel.Employee, Guushuuse.SalaryPrj.HR" table="t_employees">
<id name="ID" column="employee_id" type="Int32" unsaved-value="-1">
<generator class="identity" />
</id>
<property name="Code" column="employee_code" type="String" length="255" not-null="true" />
<property name="Name" column="employee_name" type="String" length="255" not-null="true" />
<many-to-one name="Dept" column="dept_id" class="Guushuuse.SalaryPrj.HR.DomainModel.Dept, Guushuuse.SalaryPrj.HR" not-null="true" />
</class>
</hibernate-mapping>
3.3. 人事子系统数据访问层(Dao)
部门数据访问接口(IDeptDao.cs)
using System;
using Guushuuse.SalaryPrj.HR.DomainModel;
using System.Collections;
namespace Guushuuse.SalaryPrj.HR.Dao
部门数据访问类(DeptDao.cs)
using System;
using System.Collections.Generic;
using System.Text;
using Spring.Data.NHibernate.Support;
using Spring.Transaction.Interceptor;
using Guushuuse.SalaryPrj.HR.DomainModel;
using System.Collections;
namespace Guushuuse.SalaryPrj.HR.Dao
员工数据访问接口(IEmployeeDao.cs)
using System;
using Guushuuse.SalaryPrj.HR.DomainModel;
using System.Collections;
namespace Guushuuse.SalaryPrj.HR.Dao
员工数据访问类(EmployeeDao.cs)
using System;
using System.Collections.Generic;
using System.Text;
using Spring.Data.NHibernate.Support;
using Spring.Transaction.Interceptor;
using Guushuuse.SalaryPrj.HR.DomainModel;
using System.Collections;
namespace Guushuuse.SalaryPrj.HR.Dao
修改Config/Guushuuse.SalaryPrj.HR.config文件,新增object
<object id="deptDao" type="Guushuuse.SalaryPrj.HR.Dao.DeptDao, Guushuuse.SalaryPrj.HR">
<property name="HibernateTemplate" ref="hibernateTemplate" />
</object>
<object id="employeeDao" type="Guushuuse.SalaryPrj.HR.Dao.EmployeeDao, Guushuuse.SalaryPrj.HR">
<property name="HibernateTemplate" ref="hibernateTemplate" />
</object>
在数据访问层中充分体现了Spring.NET和NHibernate的无缝集成,只要继承HibernateDaoSupport就能很便捷的使用NHibernate,而不需要很深入了解NHibernate。
3.1. 人事子系统领域模型层(DomainModel)
部门(Dept.cs)
using System;
using System.Collections.Generic;
using System.Text;
namespace Guushuuse.SalaryPrj.HR.DomainModel
员工(Employee.cs)
using System;
using System.Collections.Generic;
using System.Text;
namespace Guushuuse.SalaryPrj.HR.DomainModel
3.2. 人事子系统映射文件(HBM)
Dept.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Guushuuse.SalaryPrj.HR.DomainModel.Dept, Guushuuse.SalaryPrj.HR" table="t_depts">
<id name="ID" column="dept_id" type="Int32" unsaved-value="-1">
<generator class="identity" />
</id>
<property name="Code" column="dept_code" type="String" length="255" not-null="true" />
<property name="Name" column="dept_name" type="String" length="255" not-null="true" />
</class>
</hibernate-mapping>
Employee.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Guushuuse.SalaryPrj.HR.DomainModel.Employee, Guushuuse.SalaryPrj.HR" table="t_employees">
<id name="ID" column="employee_id" type="Int32" unsaved-value="-1">
<generator class="identity" />
</id>
<property name="Code" column="employee_code" type="String" length="255" not-null="true" />
<property name="Name" column="employee_name" type="String" length="255" not-null="true" />
<many-to-one name="Dept" column="dept_id" class="Guushuuse.SalaryPrj.HR.DomainModel.Dept, Guushuuse.SalaryPrj.HR" not-null="true" />
</class>
</hibernate-mapping>
3.3. 人事子系统数据访问层(Dao)
部门数据访问接口(IDeptDao.cs)
using System;
using Guushuuse.SalaryPrj.HR.DomainModel;
using System.Collections;
namespace Guushuuse.SalaryPrj.HR.Dao
部门数据访问类(DeptDao.cs)
using System;
using System.Collections.Generic;
using System.Text;
using Spring.Data.NHibernate.Support;
using Spring.Transaction.Interceptor;
using Guushuuse.SalaryPrj.HR.DomainModel;
using System.Collections;
namespace Guushuuse.SalaryPrj.HR.Dao
员工数据访问接口(IEmployeeDao.cs)
using System;
using Guushuuse.SalaryPrj.HR.DomainModel;
using System.Collections;
namespace Guushuuse.SalaryPrj.HR.Dao
员工数据访问类(EmployeeDao.cs)
using System;
using System.Collections.Generic;
using System.Text;
using Spring.Data.NHibernate.Support;
using Spring.Transaction.Interceptor;
using Guushuuse.SalaryPrj.HR.DomainModel;
using System.Collections;
namespace Guushuuse.SalaryPrj.HR.Dao
修改Config/Guushuuse.SalaryPrj.HR.config文件,新增object
<object id="deptDao" type="Guushuuse.SalaryPrj.HR.Dao.DeptDao, Guushuuse.SalaryPrj.HR">
<property name="HibernateTemplate" ref="hibernateTemplate" />
</object>
<object id="employeeDao" type="Guushuuse.SalaryPrj.HR.Dao.EmployeeDao, Guushuuse.SalaryPrj.HR">
<property name="HibernateTemplate" ref="hibernateTemplate" />
</object>
相关文章推荐
- ASP.NET&Spring.NET&NHibernate最佳实践(六)——第3章人事子系统(3)
- ASP.NET&Spring.NET&NHibernate最佳实践(五)——第3章人事子系统(2)
- ASP.NET&Spring.NET&NHibernate最佳实践(六)——第3章人事子系统(3)
- ASP.NET&Spring.NET&NHibernate最佳实践(七)——第3章人事子系统(4)人事子系统小结
- ASP.NET&Spring.NET&NHibernate最佳实践(四)——第3章人事子系统(1)
- ASP.NET&Spring.NET&NHibernate最佳实践(三)——第2章环境准备
- ASP.NET&Spring.NET&NHibernate最佳实践(十一)——第4章权限子系统(4)
- ASP.NET&Spring.NET&NHibernate最佳实践(一)——目录
- ASP.NET&Spring.NET&NHibernate最佳实践(二)——第1章前言
- ASP.NET&Spring.NET&NHibernate最佳实践(十二)——第4章权限子系统(5)
- ASP.NET&Spring.NET&NHibernate最佳实践(二十)——第4章权限子系统(13)
- ASP.NET&Spring.NET&NHibernate最佳实践(二十四)——第4章权限子系统(17)
- ASP.NET&Spring.NET&NHibernate最佳实践(九)——第4章权限子系统(2)
- ASP.NET&Spring.NET&NHibernate最佳实践(十三)——第4章权限子系统(6)
- ASP.NET&Spring.NET&NHibernate最佳实践(二十五)——第4章权限子系统(18)
- ASP.NET&Spring.NET&NHibernate最佳实践(二十六)——第4章权限子系统(19)权限子系统小结
- ASP.NET&Spring.NET&NHibernate最佳实践(十)——第4章权限子系统(3)
- ASP.NET&Spring.NET&NHibernate最佳实践(十四)——第4章权限子系统(7)
- ASP.NET&Spring.NET&NHibernate最佳实践(十五)——第4章权限子系统(8)
- ASP.NET&Spring.NET&NHibernate最佳实践(二十一)——第4章权限子系统(14)