应用能力低代码化-应用数据 构思(2)


数据层的概念分析

上一章我们定位先从应用数据层开始低代码化,并提出低代码所带来的挑战,我相信只要把能想到的问题都列出来,那问题会有解决的方法。

接下来我们在该章节中主要讲对数据层的功能定位,并从各方面进行一下分析。

应用能力低代码化-应用数据 构思(2)

习惯面像数据库表CRUD的同学往往都是使用《传统数据层》的概念去进行设计,而对于喜欢面向业务领域、DDD的同学会喜欢使用《领域数据层》的概念进行设计

传统数据层分析:

应用能力低代码化-应用数据 构思(2)

对于传统数据层主要是面向表进行业务设计的,业务逻辑以表实体为最小单元进行分割,再由上层进行逻辑组装

  • 实体:用于接收操作返回和请求时所用的实体对象,基本和表的column一致,
  • 仓库:该实体场景内与数据库表交互的能力
  • SQL能力:实体仓库内,能使用SQL方法与数据库交互
  • 实体ORM:可将实体做为数据库表的映射对象,与仓库直接CRUD操作,仓库类会自动交由ORM框架来负责与数据库交互

领域数据层分析

应用能力低代码化-应用数据 构思(2)

领域概念是面向业务对象展开的,将业务逻辑抽象成领域对象,让领域对象完全面向业务,业务最小单元为领域对象,再由上层进行逻辑组装

  • 聚合:在领域概念中最为重要的就是聚合,聚合内描述了对业务的数据定义
  • 领域根:当前领域最核心的模型,所有对该领域的交互都是以领域根展开的,对该领域的CRUD,事件都是通过领域根为数据对象进行传递
  • 实体:实体和传统概念中的实体是一样的,主要是为了描述最小对象单元,并以数据库表实体方式设计
  • 值对象:在领域中值对象更像是一种不可更变的对象枚举,例:金额值对象price:{value:Double, currency:int}
  • 领域仓库:仓库内实现对整个领域的持久化能力,如聚合的CRUD,和传统的仓库区别很大,领域仓库是解决整个领域的,传统的仓库是解决单个实体的场景
  • 领域CRUD:仓库可提供标准的对领域CRUD的能力
  • 自定义实现:在领域仓库内也可以通过编写仓库实现类的方式实现
  • 事件:可自定义领域事件
  • 领域服务:对外提供领域能力,外部只能通过领域服务进行交互,完全面向业务领域


概念对比

应用能力低代码化-应用数据 构思(2)

上图领域概念中的领域根,领域仓库正好都满足传统概念中实体和仓库定位,而领域概念又多了其它的能力,如事件、业务模型可以更好的为业务开发提供便利。

在最终的产品定位中只要可以涵盖领域概念,基本可以满足所有的数据层要求


着手开干吧

下一节将分析:低代码数据层功能的分析

大家多多支持,本人开源该项目https://gitee.com/moyin.com/domain-model,并会一步一步的将思想,设计过程分析给大家,希望对大家有所帮助。

希望大家多关注,支持,谢谢!

应用能力低代码化-应用数据 构思(2)

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章