zoukankan      html  css  js  c++  java
  • ddd别人的总结

    http://yuquan-nana.javaeye.com/blog/256147

    最近在做一个项目。采用J2EE作为开发平台,通过领域驱动开发(DDD)的方式进行开发。

    首先说一下系统总体架构。系统分为表现层,业务层(业务层分为应用层和领域层),持久层,

    其中表现层用Struts MVC框架,业务层用Spring框架,持久层用hibernate框架,现在主

    要总结一下业务层和持久层。

    业务层:根据DDD,业务层应该分为应用层和领域层,其中应用层的无状态的服务通过

    Spring IOC容器进行装配和管理。核心业务逻辑放到领域层,而应用层只是一个很薄的层,

    指挥领域层的模型对象完成业务操作。领域模型根据DDD分为了实体,值对象,和服务,其

    中实体是系统中一些需要记录和跟踪的对象,比如Account对象等,值对象则是一些对实体

    的描述,以及实体的状态等,比如项目的站内信中,可以将消息的状态做为抽象消息的值对

    象。为了提高实体的内聚性,将一些不是实体的职责分配给领域层服务对象。当然DDD中还

    有关于聚合,工厂,仓库,个人理解工厂主要是用来创建对象的,工厂控制了对象生命周期

    的开始,而对象的生命周期不可能只有开始这么简单,所以仓库就发挥了作用,仓库就是用

    来管理对象的中间状态的。仓库可以通过缓存来管理对象,提高系统的性能。至于事务处理,

    因为项目不需要分布式,所以直接采用JDBC事务,具体就是通过Spring管理的hibernate

    事务来实现,将事务边界界定在应用层服务的开始和结束,这样也充分发挥Spring的声明式

    事务管理功能。

    持久层采用hibernate框架来完成。首先定义一个支持CRUD操作的泛型DAO,然后利用

    Spring支持回调模板类(HibernateTemplate)来实现最基础的CRUD操作,其它的Dao接

    口继承泛型接口。这样CRUD操作在统一的基类中完成,并且还可以利用泛型带来的安全性

    检查。

       

  • 相关阅读:
    poj 1068 Parencodings
    1022. Digital Library (30)
    Android多线程断点续传下载
    Android开源项目分类汇总
    AWR--service statistics
    xml:Invalid byte 2 of 2-byte UTF-8 sequence
    mysql学习之二:mysql基本使用方法
    Codeforces Round #309 (Div. 2) C. Kyoya and Colored Balls
    startActivities的使用
    吉布斯采样 Gibbs Sampling
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400843.html
Copyright © 2011-2022 走看看