图解Jimmer,这个革命性的ORM究竟颠覆了啥?

在过去的几个月中,Jimmer(一个面向Java和Kolin的革命性ORM)和首批用户高度互动,新加了很多功能,解决了用户们在实际项目中遇到的各种难题。

本文写作目的

现在,Jimmer文档的首页以图文并貌的方式书写了通俗版的首页。但图片、gif和视频体积不小,git pages访问速度非常慢,为了方便所有人快速获取首页资料,编写本文作为镜像。


Jimmer提供了很多明显区别于传统方案的能力。其中最重要的能力,就是开发人员不再面对零散的实体对象和实体关系,而是以任意复杂的数据结构为操作目标。

任意复杂的数据结构作为一个整体进行操作,这是Jimmer的核心,也是Jimmer革命性的所在。本文以此为中心,涉及4个议题。

  • 表达任意复杂的数据结构
  • 查询任意复杂的数据结构
  • 保存任意复杂的数据结构
  • 缓存任意复杂的数据结构

一、表达任意复杂的数据结构

在这里插入图片描述
这幅图示范了一个全局的关系型数据库模型和三个业务视角。

每个业务视角观察全局关系型数据库模型中的某个区域。

  • 该区域的形状千变万化,你可以自由决定它是否包含某些实体、关联甚至属性。

    这里所说的属性,不仅包括上图已展示的数据库映射属性,还包括和数据库结构无关的业务性属性。

  • 该区域的形状无需事先设计,随时无成本定义,无限灵活,随着需求的变化而变化。

当然,作为面向Java和Kotlin的解决方案,Jimmer的实体类型必然是强类型的,但,同时也是动态的。

所谓动态实体,指实体对象的任何属性,无论是普通属性、关联属性还是和数据模型无关的业务性属性,都可以不指定。这样,动态实体可以描述任意复杂的数据结构。

不指定对象的某个属性,和把对象的某个属性设置为null,在Jimmer中是完全不同的两回事。

另外,Jimmer保证动态实体所描述的数据结构不包含环形引用,是一个由聚合根和单向关系构成的树,所以,可以直接通过HTTP协议传递。

动态实体既可以表达任意复杂的数据结构,又能直接参与HTTP传输。所以,开发人员应该:
使用统一的实体模型来表达任何业务所需的数据格式,而非为每一个业务场景所需的数据格式定义DTO。
<—CSDN引用不支持换行—>
这非常重要,不仅是因为它避免冗余的数据定义让系统丧失紧凑型;更因为它是整个Jimmer的核心,其它革命性的功能都以此为基础。

二、查询任意复杂的数据结构

Jimmer提供了两种方法,用于查询任意复杂的数据结构

1. 在服务端指定被查询数据结构的形状

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值