io.github.wuda0112:foundation-commons-impl

基于数据库设计,维护数据库定义的模型

License

License

GroupId

GroupId

io.github.wuda0112
ArtifactId

ArtifactId

foundation-commons-impl
Last Version

Last Version

1.0.2
Release Date

Release Date

Type

Type

jar
Description

Description

基于数据库设计,维护数据库定义的模型

Download foundation-commons-impl

How to add to project

<!-- https://jarcasting.com/artifacts/io.github.wuda0112/foundation-commons-impl/ -->
<dependency>
    <groupId>io.github.wuda0112</groupId>
    <artifactId>foundation-commons-impl</artifactId>
    <version>1.0.2</version>
</dependency>
// https://jarcasting.com/artifacts/io.github.wuda0112/foundation-commons-impl/
implementation 'io.github.wuda0112:foundation-commons-impl:1.0.2'
// https://jarcasting.com/artifacts/io.github.wuda0112/foundation-commons-impl/
implementation ("io.github.wuda0112:foundation-commons-impl:1.0.2")
'io.github.wuda0112:foundation-commons-impl:jar:1.0.2'
<dependency org="io.github.wuda0112" name="foundation-commons-impl" rev="1.0.2">
  <artifact name="foundation-commons-impl" type="jar" />
</dependency>
@Grapes(
@Grab(group='io.github.wuda0112', module='foundation-commons-impl', version='1.0.2')
)
libraryDependencies += "io.github.wuda0112" % "foundation-commons-impl" % "1.0.2"
[io.github.wuda0112/foundation-commons-impl "1.0.2"]

Dependencies

compile (7)

Group / Artifact Type Version
io.github.wuda0112 : foundation-jooq jar 1.0.2
io.github.wuda0112 : foundation-commons jar 1.0.2
junit : junit jar 4.12
org.projectlombok : lombok jar 1.18.12
com.google.guava : guava jar 20.0
org.apache.commons : commons-lang3 jar 3.9
org.apache.commons : commons-collections4 jar 4.4

Project Modules

There are no modules declared in this project.

---Java中台项目,Web开发也能面向对象编程,拒绝面条代码。---

数据库设计

包含的数据库表有用户体系,权限控制体系,店铺,商品,订单,消息通知体系,异步任务等等,持续更新中......

系统设计文档

包含数据库设计文档,系统约束说明,专有名词说明等等,持续更新中......

wiki

quick start

模块简介

  • foundation-lang:定义了很多工具类,常用的与业务无关的基础类,比如,树形结构Snowflake唯一ID生成器等等。没有数据库相关的维护。
  • foundation-store: 维护店铺模块
  • foundation-item: 维护Item模块,Item可以表示很多概念,比如最常见的商品
  • foundation-commons:用于维护与业务无关,通用的数据库表,比如维护email,phone,通用的实体属性等
  • foundation-user:维护用户体系,最主要的就是维护数据库表的完整性
  • foundation-security:维护权限控制体系
  • 未来还有订单体系,消息通知体系等等,持续更新中......

如何搭建完整系统

比如想做一个电商系统,则引入foundation-lang,foundation-commons,foundation-user,foundation-security,foundation-store,foundation-item等模块即可

推荐的优势

  • 数据库中台项目,不耦合业务,基于这个中台可以发展出各种业务
  • 像使用开源组件一样,100%面向对象编程,绝对不是dao,mapper这样一路下来的面条代码
  • 数据库设计很抽象,不为特点业务开发,比如像权限体系,很多都是user-role这样的模式,而我们这里使用subject,target,action等这样的抽象概念,参考JAAS,几乎可以表示所有的权限体系。
  • 丰富的文档,注释

简介

建房子需要打地基,软件开发也一样,优先的基础设施才能支撑复杂的业务。这个项目不是开箱即用的成品软件,而是一个中台项目,主要关注开发过程中常用的基本组件定义,包括

  • 数据库设计,比如电商系统相关数据库设计,包括店铺,商品,订单,仓库等等
  • 常用的模型抽象定义和实现,比如权限系统数据库设计,代码实现;消息通知模块数据库设计,代码实现等等
  • 常用的工具代码,比如在数据库设计时通常使用ID/PID表示层级结构,这样的结构是可以统一生成树形结构的,包括给前端生成方便展示的树形结构
  • 尽量使用正确的英文单词,在数据库设计以及程序代码命名时,如果开发时间太紧,通常很多就是在百度翻译下,很多时候,可能使用错了英文单词,但是,一旦使用,基本上就很难再有机会改动了,比如数据库表名,列表,在业务上线后,没有特别原因,你敢再去改动吗?因此,在这里,数据库命名的每个英文单词都经过很多验证的,比如看google,amazon同类功能中使用哪些单词,比如在youtube上搜索相关单词,看国外(主要是美国)是如何使用这个单词的,一图抵过千言万语,好的名词也能更好的表达意思
  • 定义基本的约束,比如在数据库设计中,所有数据ID都不能是0,因为0倍用于特殊用途;比如主键ID预留一个范围的值给系统数据使用,等等,虽然看上去很简单,但是积少成多,并且文档化,这些看上去小的东西也会发挥大作用

这些东西很多人都想做,但是由于业务时间太紧,今天没做,明天没做,最后就再也不好做起来了,如果在业务系统还没开始之前,就开始做好这些事情,就像修房子之前就打好地基一样,后续开发和维护就会顺畅很多。

Versions

Version
1.0.2