官网地址: https://www.summer-data.com
代码库地址:https://gitee.com/hahan2020/summer-data
架构设计
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
最重要的一个原则是将query
和persistence
分开,这个想法是在大约10年前形成的,并且使用PHP
语言进行了实现,在项目中使用反应很好。
summer-data
的数据库操作角度不同,其它框架基本上是连接·执行·SQL
,而summer-data
是SQL·在连接上·执行
的感觉,目的是有更多的操作空间构建 SQL 。
`