V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
babyfishct
V2EX  ›  程序员

Jimmer: 一个面向 Java 和 Kotlin 的革命性 ORM

  •  
  •   babyfishct · 2022-10-08 14:06:06 +08:00 · 1406 次点击
    这是一个创建于 575 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最简短介绍:

    https://babyfish-ct.github.io/jimmer/zh/docs/preface/

    此链接也是文档链接

    视频链接:

    项目链接:

    https://github.com/babyfish-ct/jimmer

    lmshl
        1
    lmshl  
       2022-10-08 15:03:45 +08:00
    泼个冷水

    粗略扫了一眼文档,感觉没有比 Ktorm / Exposed 这类 ORM 更强,更不用说和 Slick / Quill 这种真强类型且类型安全的 FRM 了。

    甚至在 TS 上玩类型体操的 Prisma 都能做到很大程度的强类型安全,我觉得以目前的理论成分看,”革命性”还有些距离......
    nothingistrue
        2
    nothingistrue  
       2022-10-08 16:52:02 +08:00
    预测,不是结论:同时对打两个东西的缺点,往往会变成同时去掉两个框架的优点并集中它们的缺点。
    Edward4074
        3
    Edward4074  
       2022-10-08 17:11:07 +08:00
    @nothingistrue 同意,用过 beetlsql 也是各种方式都可以,但实际问题很多
    nothingistrue
        4
    nothingistrue  
       2022-10-08 17:28:16 +08:00
    大致看了一下,这东西还是可以用的。理念上有两部分,一, 从 O 半到 M:隐藏 SQL ; O 端托管状态;没有 O-M 强关联。 二,对象模型是参考 JSON 或者 树的动态对象。

    这里的重点还是这个对象模型,如果业务上的数据模型就是这种树模型的话,它这个用起来倒是很不错。但是很不幸的是,Java 体系面向的业务,有心的话是领域模型或 ER 模型,无心的话直接用关系模型(就算没有数据模型的纯靠界面原型或者扣扣相传的小作坊,背后也是不知不觉用着关系数据模型),在这些模型上它这个框架基本用不了,如果硬要用,那就真成了集 JPA 和 Mybatis 的缺点与一身。
    babyfishct
        5
    babyfishct  
    OP
       2022-10-09 00:06:56 +08:00
    @nothingistrue 你的理解的大方向是对的,get 到重点了。

    至于你的担忧,不知道 Jimmer 设计如何,不确定最终达到的的效果究竟是是集两个派别的优点于一身还是集两派别缺点于一身,欢迎加入 Jimmer 群探讨。

    Jimmer 群中有很多小伙伴,有些已经生产环境中上线了 Jimmer ,有些开发了配套的工具(因为我表示只想做框架本身,不想开发配套工具),但他们有一个共同点,实际项目中使用后再也不愿回去了,无论是传统 ORM 还是 DTO 映射派。他们年轻、热情、认真、阳光,是一个很好的交流环境。
    babyfishct
        6
    babyfishct  
    OP
       2022-10-09 00:16:46 +08:00
    @nothingistrue 这个动态树模型,针对忠于原始数据模型的 OLTP 功能,并非经过分析计算的 OLAP 功能(目前支持简单的计算属性,单还不支持 OLAP 数据库那种强烈分析能力,未来把复杂的计算属性映射到 OLAP 系统是未来的大规划之一)。这种返回业务分析指标的功能,和原始数据结构没什么关系,应该定义 DTO ,这种 DTO 不是 Jimmer 的反对对象。

    Jimmer 彻底改变了开发人员看待关系型数据库的视角

    针对特定业务场景,允许开发人员从全局的对象关系模型中,勾勒出当前业务场景关心的数据边界,即,选取一个局部的对象关系模型。然后,把这个局部数据结构作为一个整体,进行
    a. 查询
    b. 修改
    c. 缓存

    此视角的变化,可以让所有行业复杂业务的开发效率质变,事半功倍。

    这个视角变化,是 Jimmer 的本质特征。

    如果把用户随意截取的这个局部数据结构视作一个文档,那么 Jimmer 提供的就是文档数据库操作接口。然而,这比真正的文档数据库还好,因为,在文档数据库中,各文档的结构在设计数据库存储时就已经定死,完全固化且彼此孤立;而在 Jimmer 中,各文档边界是开发人员为每个业务场景“临时起意”而勾勒,变化无穷且可以彼此重叠。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   959 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:30 · PVG 02:30 · LAX 11:30 · JFK 14:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.