Jimmer
一套针对Java和Kotlin的革命性ORM,以及一套基于它的完整的集成方案 (包含一套强大的缓存管理机制)。
功能
- 查询任意形状的数据结构 👁 →
- GraphQL HTTP服务的能力被拓展成无处不在本地代码行为
- 精确控制每个属性是否需要查询
- 可对自关联属性进行递归查询 →
- 统一不同数据关联,对开发者透明
- 数据库中的关联 →
- 自定义计算属性 →
- 跨越微服务的远程关联 →
- 优先读取缓存
- 保存任意数据结构 👁 →
- 快速开发任意复杂的表单保存业务 👁
- 对同一个聚合根类型而言,多种不同表单格式的保存业务可并存
- 缓存及其一致性 →
- 丰富底层缓存类型,上层抽象任意数据结构
- 对象缓存 👁 →
- 关联缓存 👁 →
- 计算缓存 👁 →
- 自由控制各数据是否启用缓存,精确到属性
- 透明性。各数据是否启用缓存对代码无影响。缓存逻辑破坏代码简洁性的痛苦一去不复返
- 多级缓存支持,采用多少级,每一级采用什么缓存技术由用户决定
- 多视图缓存,不同用户看到不同的缓存 👁 →
- 强大的一致性。其中,对象缓存和关联缓存的一致性是全自动的,无需任何开发 👁 →
- 计算属性 →
- 计算逻辑和ORM解耦,可以利用业务信息(如身份权限)计算,允许使用非SQL技术
- 不仅可以是标量属性,还可以是关联属性
- 远程关联 →
- 跨越微服务的数据关联
- 对微服务治理框架不做假设
- 将不同微服务的关系型模型,合并成一个全局的关系模型
- 强类型SQL DSL
- Jimmer独创的隐式动态table join,填补行业空白 👁 →
- 可混入NativeSQL片段,不再惧怕通用DSL无法使用特定数据库特的非通用功能 →
- 编译时发现问题,不再惧怕重构
- 良好的IDE智能提示,流畅开发
- 前后端免对接 👁 →
- 消除后端开发的DTO爆炸,从以传统开发方式(尤其是MyBatis)的重复劳动中解脱出来
- 为前端自动生成TypeScript代码,在前端代码中恢复DTO类型定义,让每个业务接口都有精确的返回类型定义
- 把后端异常映射为前端可理解错误信息
- 全局过滤器 →
- 为实体类添加过滤条件,自动应用于绝大部分查询
- 内置软删除过滤器支持 →
- 多视角缓存,过滤器导致不同的用户看到不同数据,相应地,不同的用户可看到不同的缓存 👁 →
- 智能分页 →
- 用户编写data询,自动生成count查询,并自动优化去掉非必要table join →
- 如果分页查询期望的观察区域在分页前所有数据的后半部分,进行反排序优化 →
- 当页码过大时,自动变换查询方式 →
- DTO语言 →
- 自动生成DTO类型的Java/Kotlin定义
- 自动生成实体和DTO之间的相互转化逻辑
- 自动生成查询DTO查询逻辑
- 极致性能 👁 →
- ORM本身的映射性能极高,发挥虚拟线程的威力
- 不会如传统 ORM 一样被新手诱导出低性能 SQL