搜索文档

Ebean ORM

Java 和 Kotlin 的持久性

高级赞助商

多重抽象级别

Ebean 提供多级查询抽象。

在最高抽象级别工作,并根据需要降低级别。

ORM 的好处

  • 自动避免 N+1
  • L2 缓存以减少数据库负载
  • 混合数据库和 L2 缓存的查询
  • 自动调整 ORM 查询
  • 用于搜索或 L3 缓存的 Elasticsearch。

Docker 测试容器

Docker 测试容器适用于所有受支持的数据库。

对我们使用的数据库的所有功能进行 100% 测试覆盖。

数据库迁移

内置 数据库迁移 生成和运行。

支持“rebase”迁移以及可重复、初始化和“正常”迁移。

类型安全查询

我们可以使用类型安全的 查询 Bean 构建查询。

编写查询时 IDE 自动完成,编译时检查,而且很有趣。

自动查询调整

对于 ORM 查询,Ebean 可以分析正在使用的对象图,并 自动调整查询

出色的 SQL

Ebean 生成的 SQL 是您自己手工编写的。

使用出色的 SQL,绝不生成 SQL 笛卡尔积,始终遵守关系限制/偏移。

性能不是可选项

优化查询,仅获取我们需要的内容(部分对象)。

通过智能加载上下文自动避免 N+1。

白银赞助商

MH
Maximilian Holtzberg
SH
Szabolcs Hubai
AMAH
Al-Mothafar Al-Hasan
SL
Sando Leinzinger

 

关于 Ebean

@Entity
@Table(name="customer")
public class Customer extends BaseModel {

  @Column(length=100)
  String name;

  @ManyToOne(cascade=CascadeType.ALL)
  Address billingAddress;

  @OneToMany(mappedBy="customer")
  List<Contact> contacts;
  ...
// insert ...
Customer customer = new Customer("Joe");
customer.save();

...

// find and update ...
Customer customer = Customer.find.byId(42);
customer.setName("Montana");
customer.save();
List<Customer> customers =

  new QCustomer()
    .name.istartsWith("rob")
    .billingAddress.city.equalTo("Auckland")
    .setMaxRows(10)
    .orderBy()
      .name.asc()
    .findList();