SpringIO 技术专家 Mikhail Polivaha 关于国产 Java ORM Jimmer 的介绍和评价

一款以 Jimmer 为核心的 Java 脚手架

https://github.com/ccmjga/mjga-scaffold/tree/model-first
在这里插入图片描述

1. 简介

在本教程中,我们将回顾 Jimmer ORM 框架。在撰写本文时,这个 ORM 相对较新,但它有一些有前途的功能。我们将回顾 Jimmer 的哲学,然后用它写一些例子。

2. 整体架构

首先,Jimmer 不是 JPA 实现。这意味着 Jimmer 并没有实现每个 JPA 功能。例如,Jimmer 本身没有脏检查机制 。不过,值得一提的是,Jimmer 和 Hibernate 一样,有很多类似的概念。这是有意为之的,以便使从 Hibernate 的过渡更加顺畅。因此,一般来说,JPA 知识将有助于理解 Jimmer。

例如,Jimmer 有一个实体的概念,尽管它的形状和设计与 Hibernate 有很大不同。但是,延迟加载或级联等概念在 Jimmer 中并不存在。原因是由于其设计方式,它们在 Jimmer 中并没有多大意义。我们很快就会看到这一点。

本节的最后说明:Jimmer 支持多种数据库,包括 MySQL、Oracle、PostgreSQL、SQL Server、SQLite 和 H2。

3. 实体样本

如前所述,Jimmer 与 Hibernate 和许多其他 ORM 框架有很多不同;它有几个关键的设计原则。第一个是我们的实体只有一个目的——代表底层数据库的模式。但是,这里重要的是,我们没有指定我们打算通过注释与它交互的方式。 相反,Jimmer 要求开发人员提供派生要在调用站点上执行的查询所需的所有信息

那么,这意味着什么呢?为了理解,让我们查看以下 Jimmer 实体:

import org.babyfish.jimmer.client.TNullable;
import org.babyfish.jimmer.sql.Column;
import org.babyfish.jimmer.sql.Entity;
import org.babyfish.jimmer.sql.GeneratedValue;
import org.babyfish.jimmer.sql.GenerationType;
import org.babyfish.jimmer.sql.Id;
import org.babyfish.jimmer.sql.JoinColumn;
import org.babyfish.jimmer.sql.ManyToOne;
import org.babyfish.jimmer.sql.OneToMany;

@Entity
public interface Book {
   
   
    @Id
    @GeneratedValue(strategy = GenerationType.USER)
    long id();

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值