From 88b2bf911c810ac96b4b847926b1a3ded195512f Mon Sep 17 00:00:00 2001 From: gitee-bot Date: Fri, 20 Jun 2025 15:32:26 +0000 Subject: [PATCH] Update README.md --- README.md | 250 +++++++++++++++++++----------------------------------- 1 file changed, 85 insertions(+), 165 deletions(-) diff --git a/README.md b/README.md index 99395aa7..7afc200c 100644 --- a/README.md +++ b/README.md @@ -1,167 +1,87 @@ -

Dorive

-

轻量化、渐进式、领域驱动式开发框架

-

- license - release - commit -

-
- -### 🎁简介 - -🔥🔥🔥dorive是一个轻量化、渐进式、领域驱动式开发框架,帮助开发者,开发**可持续演进的复杂应用**。 - -dorive = domain + driven 或 do + driven ,是原公司项目沉淀后的开源库。 - -“do”表明了一种态度,只有付诸行动,才能有所收获。 - -### 🧱领域驱动 - -领域驱动是一种软件开发方式。 - -解决痛点: - -- **腐化**(代码组织混乱,逻辑互相渗透) -- **僵化**(直接依赖过多,修改困难) - -实施方法: - -- 通过**业务划界**,理清业务之间的关系。 -- 通过**业务建模**,表达真实的业务逻辑。 - -核心: - -- **高内聚** -- **低耦合** - -### 🏗️架构实现 - -领域驱动的几种架构实现方式: - -- 分层架构(Layered Architecture) -- 六边形架构(Hexagonal Architecture) -- 清洁架构(Clean Architecture) -- 事件驱动架构(Event-Driven Architecture, EDA) -- CQRS(命令查询职责分离) -- 微服务架构(Microservices + DDD) - -- **3M架构(Microservices + Module + Model)** - -### 3️⃣3M架构 - -一种新的架构实现。在分层架构、微服务架构的基础上,提出将项目**模块化、模型化**,从而达到业务自由组合,灵活定制的效果。 - -- 逻辑架构图:[logic.png](https://gitee.com/digital-engine/dorive/blob/3.5.2/doc/img/logic.png) -- 物理架构图:[physical.png](https://gitee.com/digital-engine/dorive/blob/3.5.2/doc/img/physical.png) - -### 📦模块化(module) - -一个应用系统由一个或多个模块组成。 - -模块应具有以下特性: - -- 每个模块都具备独立运行的能力。 -- 每个模块都能单独测试。 -- 允许同个模块不同版本,同时存在。 -- 模块之间配置、命名空间隔离。 -- 模块与模块的配置、脚本等生命周期一致。 -- 模块可选择向外暴露的bean。 -- 模块之间不直接依赖,可通过接口与事件进行交互。 - -### 🛠️模型化(model) - -同个领域内的多个模块共享一个边界上下文。 - -边界上下文的作用: - -- 以参数的形式,影响模型的行为。 - -模型应具有以下特性: - -- 由仓储负责查询业务数据。 -- 由工厂负责构建模型实例。 -- 模型的持久化行为,能够被监听。 -- 查询行为与存储引擎解耦。 - -### 💯推荐理由 - -dorive开发框架实现了模块化、模型化的全部特性,你可以有选择性地使用。 - -模块化、模型化的优势: - -- 多人协同,效率高。 -- 升级或回退,影响小。 -- 调用简单,易维护。 -- 无缝迁移,复用性好。 -- 面向对象,拓展性好。 -- 事件驱动,耦合度低。 -- 持续演进,技术负债低。 -- 代码生成,开发快。 - -### 🚅快速开始 - -Maven引入: - -```xml - - com.gitee.digital-engine - dorive-spring-boot-starter - 3.5.2 - -``` - -### 💡项目案例 - -项目地址:[dorive-example](https://gitee.com/digital-engine/dorive-example) - -### 📝说明文档 - -文档地址:[Gitee wiki](https://gitee.com/digital-engine/dorive/wikis/pages) - -### 🌿版本说明 - -例如:3.5.1(格式A.B.C) - -- A-架构版本:架构重构时增加,不保证兼容性。 -- B-特性版本:新特性引入时增加。 -- C-迭代版本:功能优化、bug修复时增加。 - -### 💬依赖项 - -| 依赖库 | 版本 | 说明 | -| ------------------------- | ------ | ------------------- | -| spring-boot-starter-web | 2.7.18 | spring boot web集成 | -| spring-tx | 5.3.31 | spring事务管理 | -| hutool-all | 5.8.25 | 工具库 | -| mybatis-plus-boot-starter | 3.5.7 | 数据库框架 | - -### 🤝兼容性 - -| 模块 | 说明 | 模块 | 适配Spring Boot版本 | -| -------------------------- | ---------------- | ------ | ------------------- | -| dorive-api | 框架规范 | | | -| dorive-module | 模块化核心实现 | 模块化 | 2.7.18 | -| dorive-test | 测试插件实现 | 模块化 | 2.7.18 | -| dorive-core | 模型化核心实现 | 模型化 | 2.2.2 - 2.7.18 | -| dorive-event | 事件通知实现 | 模型化 | 2.2.2 - 2.7.18 | -| dorive-query | 关联查询实现 | 模型化 | 2.2.2 - 2.7.18 | -| dorive-ref | 仓储引用实现 | 模型化 | 2.2.2 - 2.7.18 | -| dorive-sql | 动态查询实现 | 模型化 | 2.2.2 - 2.7.18 | -| dorive-mybatis-plus | mybatis-plus适配 | 模型化 | 2.2.2 - 2.7.18 | -| dorive-web | web开发适配 | 模型化 | 2.2.2 - 2.7.18 | -| dorive-autoconfigure | 自动配置实现 | | | -| dorive-spring-boot-starter | 启动器 | | | - -### 🐞bug反馈与建议 - -提交问题反馈请说明正在使用的JDK版本、dorive版本,以及依赖库版本。 - -页面地址:[Gitee issue](https://gitee.com/digital-engine/dorive/issues) - -### 🙏🏻特别感谢 - -- [hutool](https://gitee.com/dromara/hutool/tree/v5-master/) -- [mybatis-plus](https://gitee.com/baomidou/mybatis-plus/tree/master/) - +# 🎉 Dorive - 面向 DDD 的数据访问框架 + +## 🧱 领域驱动设计支持 +Dorive 是一个支持领域驱动设计(DDD)的 Java 数据访问框架,它通过注解和实体定义帮助开发者更高效地构建聚合根、值对象等 DDD 概念。 + +## 🏗️ 架构实现 +- **3️⃣ 3M 架构** + 框架基于 `Module(模块)`、`Model(模型)` 和 `Mapper(映射器)` 三层架构设计。 +- **📦 模块化(module)** + 支持模块化开发,可定义模块间依赖关系和扫描路径。 +- **🛠️ 模型化(model)** + 提供统一模型解析和转换机制,支持多种数据格式如 JSON、Map � { "@context" : "https://schema.org", "@type" : "SoftwareSourceCode", "name" : "Dorive", "description" : "一个面向领域驱动设计(DDD)的 Java 数据访问框架", "codeRepository" : "https://gitee.com/dorive/dorive-api", "programmingLanguage" : { "@type" : "ComputerLanguage", "name" : "Java" }, "license" : "https://gitee.com/dorive/dorive-api/blob/master/LICENSE", "version" : "1.0.0" } - 通过 `EntityElementResolver` 和 `EntityMapperResolver` 实现实体与数据库字段的映射。 + +## 💯 推荐理由 +- 高度抽象化的接口如 `Repository`, `Binder`, `QueryHandler`。 +- 支持 MyBatis-Plus,提供 `MybatisPlusExecutor` 与 `EasySqlInjector`。 +- 提供事件支持(`dorive-event`),可监听 `ExecutorEvent`, `RepositoryEvent` � { "@context" : "https://schema.org", "@type" : "SoftwareSourceCode", "name" : "Dorive", "description" : "一个面向领域驱动设计(DDD)的 Java 数据访问框架", "codeRepository" : "https://gitee.com/dorive/dorive-api", "programmingLanguage" : { "@type" : "ComputerLanguage", "name" : "Java" }, "license" : "https://gitee.com/dorive/dorive-api/blob/master/LICENSE", "version" : "1.0.0" } - 通过 `EventExecutor` 和 `EventFactory` 实现事件发布机制。 +- 支持模块化加载和依赖注入,适用于 Spring Boot 应用。 + +## 🚀 快速开始 +1. 添加依赖(`pom.xml`): + ```xml + + com.gitee.dorive + dorive-core + 1.0.0 + + ``` + +2. 使用注解定义实体: + ```java + @Entity + public class User { + @Id + private Long id; + @Property + private String name; + @Alias("age") + private Integer userAge; + } + ``` + +3. 在 Spring Boot 中启用模块化配置: + ```java + @Configuration + public class AppConfig { + // 使用 @Repository 注解定义仓储 + } + ``` + +## 💡 项目案例 +提供实体查询、批量操作、联合查询等实际用例,支持 `LambdaExample` 编写类型安全的查询逻辑。 + +## 📝 说明文档 +- 支持聚合根(`@Aggregate`)和绑定字段(`@Binding`)。 +- 提供 `Query` 类支持复杂查询逻辑。 +- 支持 SQL 构建(`SelectSegment`, `TableJoinSegment`)和执行(`MybatisPlusExecutor`)。 +- 提供 `Ref` 接口,实现引用注入与链式操作。 + +## 🌿 版本说明 +当前版本:1.0.0 +主要模块包括: +- `dorive-core`: 核心功能。 +- `dorive-api`: 提供实体定义与注解。 +- `dorive-event`: 支持仓储和执行器事件。 +- `dorive-web`: 提供 Web 支持,包括返回对象 `ResObject`。 +- `dorive-sql`: 提供 SQL 构建与执行逻辑。 +- `dorive-mybatis-plus`: 与 MyBatis-Plus 集成。 + +## 📦 依赖项 +- Java 8+ +- Spring Framework 5.x +- MyBatis / MyBatis-Plus(可选) +- Jackson(用于 JSON 转换) + +## 🤝 兼容性 +- 兼容 Spring Boot 2.x 及以上版本。 +- 支持主流数据库(MySQL、PostgreSQL)通过 MyBatis-Plus。 +- 支持模块化加载和动态依赖注入。 + +## 🐞 Bug 反馈与建议 +欢迎提交 issue 到 [Gitee 仓库](https://gitee.com/dorive/dorive-api) 或在社区参与讨论。 + +## 🙏 感谢 +感谢 [MyBatis-Plus](https://github.com/baomidou/mybatis-plus), [Spring Boot](https://spring.io/projects/spring-boot) 社区对框架集成的支持。 \ No newline at end of file -- Gitee