数据库
io.ebean.Database
提供了大多数功能,包括查询、保存、删除和事务。
// persist ...
Customer customer = ...
database.save(customer);
// fetch ...
List<Customer> customers =
database.find(Customer.class)
.findList();
// transactions ...
try (Transaction transaction = database.beginTransaction()) {
// fetch and persist beans etc ...
transaction.commit();
}
// persist ...
val customer = ...
database.save(customer)
// fetch ...
val customers =
database.find(Customer::class.java)
.findList()
// transactions ...
database.beginTransaction().use { transaction ->
// fetch and persist beans etc ...
transaction.commit();
}
javax.sql.DataSource
一个 Database 实例有一个 JDBC DataSource,将其一对一地关联到一个实际数据库。
请注意,出于性能原因(用于只读查询),Database 可以有一个第二个只读 DataSource,并有可能连接到数据库读副本。
默认数据库
一个数据库可以指定为默认数据库
。默认的 Database 实例已在 DB
中注册,然后可以通过 DB.getDefault()
获取。
// obtain the "default" database
Database database = DB.getDefault();
// obtain the "default" database
val database = DB.getDefault()
命名数据库
每个 Database 实例都有一个名称,并且可以注册到 DB
中,然后可以通过其名称通过 DB.byName()
获取。
// obtain a database by it's name
Database hrDatabase = DB.byName("hr");
// obtain a database by it's name
val hrDatabase = DB.byName("hr")
模型使用默认数据库
当我们的实体 Bean 扩展 Model 并且我们使用 save() 时,实际上是使用默认数据库。
Customer customer = new Customer("Roberto")
// use the default database
customer.save()
val customer = Customer("Roberto")
// use the default database
customer.save()
查询 Bean 使用默认数据库
当我们创建一个 Query Bean 并执行查询时,实际上也是使用默认数据库。
// use the default database
List<Customer> customers = new QCustomer()
.status.equalTo(Status.NEW)
.billingAddress.city.equalTo("Auckland")
.findList();
// use the default database
val customers = QCustomer()
.status.equalTo(Status.NEW)
.billingAddress.city.equalTo("Auckland")
.findList()
请注意,在实践中,当使用 Model 进行持久化、Query Bean 进行实体查询以及 @Transactional 进行事务处理时,我们倾向于只将数据库直接用于 DTO 查询、SQL 查询 和 SQL 更新。
配置
有关通过编程方式和属性配置数据库实例的详细信息,请参见下一部分的 配置。
DB (io.ebean.DB)
- DB 保存一个数据库实例注册表(按名称为键)
- DB 保存一个称为默认数据库的 Database 实例
- DB 具有便利方法来操作默认数据库
获取默认或命名数据库实例
创建 Database 实例后,可以将其注册到 DB 中。然后,我们可以使用 DB
按名称获取这些 Database 实例,并且可以通过 DB.getDefault()
获取默认数据库。
// obtain the "default" database
Database server = DB.getDefault();
// obtain the HR database by name
Database hrDB = DB.byName("hr");
DB 便利方法
DB 具有便利方法,这些方法可以有效地代理到默认数据库。这非常有用且方便,因为许多应用程序只使用一个数据库。
Customer customer = ...
// save using the 'default' database
DB.save(customer);
// which is the same as
Database defaultDatabase = DB.getDefault()
defaultDatabase.save(customer);
DB 是可选的
请注意,您根本不必在应用程序中使用 DB 单例 - 它的使用是完全可选的。相反,我们可以创建 Database 实例并根据需要对其进行注入
。我们通常使用 Spring
或 Guice
或类似的 DI 框架来执行此操作。
我们可以同时执行这两项操作,并将 Database 实例注册到 DB 和 DI 上下文中,并以这种方式访问数据库实例。
EbeanServer
Database 和 EbeanServer 是同一事物。
io.ebean.EbeanServer
是 io.ebean.Database
的较旧的原始名称。它们可以互换使用。随着时间的推移,EbeanServer 将被弃用,并且代码应该迁移到使用 io.ebean.Database。
Ebean
DB 和 Ebean 是同一事物。
io.ebean.Ebean
是 io.ebean.DB
的较旧的原始名称。它们可以互换使用。随着时间的推移,Ebean 的使用将被弃用,并且代码应该迁移到使用 io.ebean.DB。