跳到主要内容

前提

为了快速预览Jimmer最主要的特性,这里需要给出几个实体,作为本章节所有讨论的基本前提。

实体的地位

提示

在Jimmer应用中,唯一重要的就是全局统一的ORM实体模型。

全局实体模型随着数据库的设计的定型而定型,和具体查询/修改业务对交互格式的诉求无关,相对稳定。

至于每个查询/修改业务需要交互什么样的DTO类型,完全不重要。

只有相对稳定的实体模型才是重要的。所以,Jimmer非常善于处理需求的变动。

实体之间的UML关系

这里,列举三个实体类型,BookStoreBookAuthorTreeNode,作为当前章节所有讨论的前提假设。

uml

实体类型定义

BookStore

@Entity
public interface BookStore {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id();

String name();

@Nullable
String website();

@OneToMany(mappedBy = "store")
List<Book> books();
}

Book

@Entity
public interface Book {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id();

@Key
String name();

@Key
int edition();

BigDecimal price();

@Nullable
@ManyToOne
BookStore store();

@ManyToMany
List<Author> authors();
}

Author

@Entity
public interface Author {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
UUID id();

@Key
String firstName();

@Key
String lastName();

Gender gender();

@ManyToMany(mappedBy = "authors")
List<Book> books();
}

其中,Gender是一个非常简单的枚举类型

public enum Gender { MALE, FEMALE }