Skip to content

架构设计

总体架构图

summer-data的架构设计比较简单,主要分为三个部分:

  • 顶层概念
    • Jql 负责查询
    • Table 负责持久化
  • 基础概念
    • Jsql 封装JDBC,主要是将 SQL 语句与 Parameter 打包
    • DTO&Map 负责保存查询返回的结果集
    • Transaction 处理事务相关,summer-data提倡用显示的事务代码来控制事务
    • Dialect 在 Jql -> SQL 过程中,根据数据库产品生成符合语法的 SQL
  • JDBC层
    • 这一层的概念与 JDBC 基本相同,最多是做了一些小小的增强

查询 api 设计

与其它3大架构相比,summer-data的 API 非常不同。其它框架是 DataSource 去执行一个 SQL,summer-data是一个 SQL 在某个 Connection/DataSource/Transaction 上执行。

查询API的范式如下:${动作}For${结果类型}

  • 动作
    • query 返回表数据的列表,可以是0条
    • find 返回一条表数据,不是一条会抛异常
    • page 返回一页数据
  • 结果类型
    • Map 类型是Map<String, Object>
    • Object 类型是一个实体类

所以有 3*2 = 6个查询API

  • queryForMap, queryForObject
  • findForMap, findForObject
  • pageForMap, pageForObject

还有一个查询API count 返回查询数据总数

设计理念

summer-data的架构比较简单、朴素,总的思路是由用户端出发,设计API,然后逐步完成底层实现。

summer-data最重要的一个原则是将querypersistence分开,这个想法是在大约10年前形成的,并且使用PHP语言进行了实现,在项目中使用反应很好。

summer-data的数据库操作角度不同,其它框架基本上是连接·执行·SQL,而summer-dataSQL·在连接上·执行的感觉,目的是有更多的操作空间构建 SQL 。 `