最近在做一个项目。采用J2EE作为开发平台,通过领域驱动开发(DDD)的方式进行开发。
首先说一下系统总体架构。系统分为表现层,业务层(业务层分为应用层和领域层),持久层,
其中表现层用Struts MVC框架,业务层用Spring框架,持久层用hibernate框架,现在主
要总结一下业务层和持久层。
业务层:根据DDD,业务层应该分为应用层和领域层,其中应用层的无状态的服务通过
Spring IOC容器进行装配和管理。核心业务逻辑放到领域层,而应用层只是一个很薄的层,
指挥领域层的模型对象完成业务操作。领域模型根据DDD分为了实体,值对象,和服务,其
中实体是系统中一些需要记录和跟踪的对象,比如Account对象等,值对象则是一些对实体
的描述,以及实体的状态等,比如项目的站内信中,可以将消息的状态做为抽象消息的值对
象。为了提高实体的内聚性,将一些不是实体的职责分配给领域层服务对象。当然DDD中还
有关于聚合,工厂,仓库,个人理解工厂主要是用来创建对象的,工厂控制了对象生命周期
的开始,而对象的生命周期不可能只有开始这么简单,所以仓库就发挥了作用,仓库就是用
来管理对象的中间状态的。仓库可以通过缓存来管理对象,提高系统的性能。至于事务处理,
因为项目不需要分布式,所以直接采用JDBC事务,具体就是通过Spring管理的hibernate
事务来实现,将事务边界界定在应用层服务的开始和结束,这样也充分发挥Spring的声明式
事务管理功能。
持久层采用hibernate框架来完成。首先定义一个支持CRUD操作的泛型DAO,然后利用
Spring支持回调模板类(HibernateTemplate)来实现最基础的CRUD操作,其它的Dao接
口继承泛型接口。这样CRUD操作在统一的基类中完成,并且还可以利用泛型带来的安全性
检查。
最后先请教一下各位兄弟,我对于应用层服务和领域层服务的划
分不是很清楚,请问一下各位具体的划分标准是什么?各位在项
目中怎么做的?我现在是把应用层服务当做Facade来用,用来
封装业务逻辑,各位兄弟还有什么好的方法吗?请指教一下,谢了。

转载于:https://blog.51cto.com/yuquan/360352

项目总结(采用领域驱动开发方式)相关推荐

  1. 在项目中引入领域驱动设计的经验

    Chris Patuzzo近期在一次演讲中介绍了领域驱动设计(DDD)的原则,并结合一个基于Ruby on Rails的真实项目进行讲解.在这次项目之前,Chris所在的团队为重新设计公司的主营网站所 ...

  2. 一文揭秘领域驱动设计(DDD):领域和子域!

    来源:掘金 链接:https://juejin.cn/post/6898450822771539981 -     前言     - 众所周知,领域驱动设计(DDD)是个相当抽象的概念,国内除了几家知 ...

  3. 微服务架构与领域驱动设计应用实践

    本篇文章一共分为三个部分,分别是微服务架构的演进过程.具体实践微服务的应用技术和领域驱动设计的意识转变.微服务架构已经渗透到互联网应用的方方面面,而领域驱动设计也逐渐被业界所接收. 微服务架构几乎都是 ...

  4. 如何使用ABP框架(2)三层架构与领域驱动设计的对比

    本文来自长沙.NET技术社区,原创:邹溪源.全文共有8500字,读完需耗时10分钟. 题图来自@pixabay 简述 上一篇简述了ABP框架中的一些基础理论,包括ABP前后端项目的分层结构,以及后端项 ...

  5. 领域驱动设计,让程序员心中有码(四)

    #领域驱动设计,让程序员心中有码(四) ----------------------追忆有关分层的古老往事 我一直认为,程序员也是艺术家,他们撰写的每一行代码,是献给这大好世界的优美诗篇.不同的人,写 ...

  6. 领域驱动设计和实践(转:http://kb.cnblogs.com/page/112298/)

    引言 软件系统面向对象的设计思想可谓历史悠久,20世纪70年代的Smalltalk可以说是面向对象语言的经典,直到今天我们依然将这门语言视为面向对象语言的基础.随着编程语言和技术的发展,各种语言特性层 ...

  7. 《领域驱动设计》第二部分:模型驱动设计的构造块 第四章:分离领域 阅读笔记...

    内容概述 将领域对象与系统中的其他功能分离 第一小节 介绍了分离领域的技术:Layered Architecture. 第二小节 指出大部分软件系统都会采用分层的架构,但是分层方案有很多种.领域驱动设 ...

  8. c/s三层结构信息系统的三个层次_如何使用ABP框架(2)三层架构与领域驱动设计的对比...

    本文来自长沙.NET技术社区,原创:邹溪源.全文共有8500字,读完需耗时10分钟. 题图来自@pixabay 简述 上一篇简述了ABP框架中的一些基础理论,包括ABP前后端项目的分层结构,以及后端项 ...

  9. 分布领域驱动设计(DDD):领域接口化设计式缓存的选择

    -     前言    - 把服务对象(service)和资源库对象(repository)设计成接口是最常见的.但是这对接口化的认识还远远不够,我们需要更深入地去分析接口化设计和更全面地应用接口化编 ...

最新文章

  1. PHP经验总结(一)序言
  2. 【具体使用实例】Rall封装线程(C\C++)
  3. 利用Helm简化Kubernetes应用部署(2)
  4. 使用Spring Security 5.0和OIDC轻松构建身份验证
  5. c++实现超声回波包络检测_超声波物位计的选用
  6. LeetCode 934 最短的桥
  7. mysql复杂查询示例_找到时间和内存复杂性之间的平衡-一个示例
  8. java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 确认配置\版本都没问题,那么你就差最后一步
  9. ubuntu 配置ip地址命令
  10. Hyperledger Fabric教程(15)--基于Kafka的Order服务实战
  11. Idm在B站没有显示下载按钮
  12. 2021年氧化工艺报名考试及氧化工艺模拟试题
  13. 带你玩东方系列(视频版)游戏链接
  14. 【解决方案】云看大熊猫,动物园直播解决方案EasyNVR+EasyNVS如何玩转动物IP
  15. COVID-19检测方法汇总
  16. 【SSD测试专题四】Performance
  17. Day02 - CSS
  18. 《Python数据科学入门》之数据库的使用(第4章)
  19. 网络安全实验2 扫描器X-SCANNER应用实验
  20. 1.python实现二进制补码求原码

热门文章

  1. c 插件读取有属性的html6,廖雪峰的JS教程6-jQuery
  2. 主页面功能的java_6-04-项目实战-主页面显示当前用户退出功能实现
  3. php 开启,PHP服务的开启详细步骤
  4. javaBean和jsp应用
  5. java中图片文件的传输及显示(Socket以及ServerSocket演示)
  6. python中dic_python之dic {字典}(重要指数*****)
  7. java基础知识点_JAVA基础知识
  8. php井字游戏代码_PHP初级笔试题:Tic-Tac-Toe(n阶井字棋)判断胜负
  9. python 基因序列提取_科学网—简单的Python脚本提取对应位置基因序列(fasta文件) - 王彬忠的博文...
  10. MySQL Replication需要注意的问题