使用NHibernate的系统体系结构

根据James的意见,我重新调整了基于NHibernate系统的体系结构

大致的建模原则为:
    用例基本上有对应的服务层的类来提供服务。
    根据界面,建立界面、服务类、领域类,以及DAO层之间的分层类图
    根据界面、用例建立动态模型
    有关保存、删除、Load、新建等都由服务层的类,调用DAO来执行,有关查询,由服务层的类调用Native SQL Dao来执行。

有关问题:
1. 在上一个项目中,发现NHibernate会经常更新一些并没有改变的对象,经过分析,发现是null值的问题,这个问题如何解决?
2. 有关面向对象模型中,领域模型的有关业务,如一个定购单,计算定购金额的方法等这些方法的位置问题,现在放在领域层,在J2EE的模型中,应该是放在服务层的。
3. 什么情况下,可以去掉Native Sql DAO,这个DAO,并不使用领域模型,直接使用IDictionary作为一行数据的载体,使用名字来访问,或者使用DataReader作为载体。

综合大家的意见,和我们架构评审、Demo实现的情况,架构已经修改成下面这个样子了:


这样:Business Service作为业务服务层,对应于用例的实现,而NHibernate的DAO由Domain层与之交互,来完成有关操作。
Native SQL 这一部分得以保留,以执行:SQL,存储过程,返回有关数据等等。

posted on 2005-06-24 17:43  caidehui  阅读(4498)  评论(14编辑  收藏  举报