当前位置: 首页 > 工具软件 > Jimmer > 使用案例 >

Jimmer彻底完成了,一个面向Java/Kotlin的革命性ORM

东郭瀚玥
2023-12-01

Jimmer,一个面向Java和Kotlin的革命性ORM,终于彻底完成了!

现在,所有的预期设计目标全部达到。

B站视频(38分钟)https://www.bilibili.com/video/BV1kd4y1A7K3

适用范围:满足如下特点的项目

  1. OLTP
  2. 以关系型数据库为持久数据
  3. 以NoSQL为缓存数据(可选)

都可以使用Jimmer来开发,同时实现开发速度快、维护性好、功能强大、性能优越四大目标。

一、为何Jimmer“如此狂“,声称自己是革命性的ORM?

1. 功能强于其他已有方案

ORM设计有三个方面:1. 查询; 2. 更新; 3:缓存

无论对哪个方面而言,Jimmer都针对任意复杂的对象树,而非简单对象。这个独特的设计带来了其他ORM无法比拟的便捷性。

2. 性能强于其他已有方案

Jimmer使用了很多优化技巧,其中最重要的一条是不使用Java的反射,所以可以获取其他ORM无法企及的性能。基准测试的图表在文档中可以看到。

该基准测试对比了Jimmer和现有所有方案,包括MyBatisc和几乎所有现有ORM,其源代码也在项目中(如果想要自己运行此基准测试,需要20多分钟)


二、相比于上个大版本的变化。



1. 外部缓存。

默认情况下,该框架只是一个非常轻量级且功能强大的SQL生成器,没有缓存。 尽管如此,用户仍可以将为其配置外部缓存。

a. 对用户的缓存技术选型不做任何假设,开发人员可以选用任何缓存技术。框架只做缓存的管理协调,不做具体缓存实现。

b. 与其他ORM不同,jimmer不仅支持对象缓存,还支持关联缓存。 两者在幕后结合,可以用户查询任意深的对象树。

因此,外部缓存是为任意深度的对象树设计的,而不是简单的对象。

对于高性能的复杂数据结构查询而言,以下两个工作会给开发人员造成较大工作量。

a. 从不同的的缓存中查询不同数据碎片,然后手动把他们合并为一个整体后做为结果返回

b. 保证缓存和数据库之间的一致性。

为了把开发人员从这两个繁重的任务中解脱出来,框架的缓存机制被设计得足够强大,且对开发人员透明。

2. 支持Kotlin API

新加了Kotlin API, 实现Java/Kotlin双支持,两套API的功能完全一样。

原有Java API保证对所有开发团队可用;新加的Kotlin API追求极致的开发体验。

三、开发Jimmer的初衷
 

目前,功能最单薄的MyBatis是用得最多的,这是为什么呢?

传统ORM想提供强大的功能,但事实上并不足够强大,不但解决的问题不多,而且引入的问题也不少。相反,MyBatis足够简单,虽然解决的问题少,但引入的问题也少,对团队而言,可控性强。

然而,MyBatis的功能是非常简单的,最基础最简单的映射被MyBatis完成后,上层仍然还有太多工作要做。目前的解决方案是:堆人。

Jimmer一方面避免如同传统ORM那样在解决问题的同时引入新问题,一方面对传统ORM未解决甚至未思考过的一系列深层次问题进行集中解决。用足够强大的功能和足够快的性能来打破人们技术选择时的心理平衡。改变目前行业的现状。

 类似资料: