foundation

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

License

License

GroupId

GroupId

io.github.wuda0112
ArtifactId

ArtifactId

foundation
Last Version

Last Version

1.0.2
Release Date

Release Date

Type

Type

pom
Description

Description

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

Project URL

https://github.com/wuda0112/foundation
Source Code Management

Source Code Management

https://github.com/wuda0112/foundation

Download foundation

Filename Size
foundation-1.0.2.pom 12 KB
Browse

How to add to project

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

Dependencies

compile (5)

Group / Artifact Type Version
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

  • foundation-lang
  • foundation-user
  • foundation-security
  • foundation-user-impl
  • foundation-commons
  • foundation-commons-impl
  • foundation-jooq
  • foundation-store
  • foundation-store-impl
  • foundation-item
  • foundation-item-impl
  • foundation-security-impl

---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