类型
所有类型、枚举、UUID、文件、布尔值、日期和时间、数字、其他
JPA 映射
Ebean 映射扩展
构造函数
与 JPA 不同,Ebean 不需要默认构造函数。你可以自由创建具有带参数构造函数的实体 Bean。
命名约定
Ebean 使用命名约定 API。这相对重要,因为这通常意味着我们仅需要在不遵循命名约定时指定 @Column name
。
类似地,只要遵循命名约定(默认为“下划线命名约定”),我们往往不需要明确使用 @JoinColumn
或 @JoinTable
。
集合
与 Hibernate 不同,Ebean 中的建议是使用 List
而不是 Set
来映射集合。
JPA 注释
Ebean 使用与 JPA 规范相同的映射。你可以学习并使用相同的映射注释。这通常是规范中很好的一部分,我希望规范的这一部分在大多数情况下都能经受住时间的考验。
在某些方面,JPA 通常是不够的。
枚举 |
JPA 中的枚举映射很差。Ebean 以 @DbEnumValue 和 @EnumValue 的形式提供了 2 个更好的替代方案。我们在 JPA JIRA 问题跟踪器中监视着此问题的进度。
|
---|---|
FetchType EAGER / LAZY |
JPA 映射鼓励使用 FetchType.EAGER 和 LAZY,这与 Ebean 的查询方法相反,后者会针对每个用例优化查询(并通过对应用程序进行分析来提供自动查询调整)。 在使用 Ebean 时,通常不建议使用 EAGER LAZY 映射注解。 |
@Size 和 @NotNull
Ebean 支持使用 javax validation
注解 @Size
和 @NotNull
。
@Size | 定义映射的列宽。例如,@Size(50) 等效于 @Column(length=50) |
---|---|
@NotNull | 将映射的列定义为非空。等效于 @Column(nullable = false) 或 @ManyToOne(optional=false)。 |
当前限制
Ebean 目前不支持许多 JPA 映射,但希望将来能够支持。这些映射已记录为增强请求。
116 |
仅支持单表继承。 没有计划支持 JOINED 或 TABLE PER CLASS 继承策略。 |
1777 |
仅支持每个类型一个类型转换器。 JPA @Converter autoApply false 不受支持。这意味着我们希望在所有使用它的属性中一致地映射一个类型。例如,我们不能在同一个 Ebean 数据库实例中使用两个转换器以两种不同的方式映射布尔值。 |
你可以在 Github 问题 中查看所有未解决的问题和增强功能的列表。
请参阅标记有 限制 标签的 github 问题。