データベース
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 インスタンスには、1 つの実際のデータベースに 1 対 1 で関連付ける JDBC DataSource があります。
Database には、パフォーマンス上の理由(読み取り専用クエリ)で使用し、潜在的にデータベースの読み取りレプリカに接続するための 2 番目の読み取り専用 DataSource を設定できることに注意してください。
デフォルトのデータベース
1 つのデータベースを デフォルトのデータベース
として指定できます。デフォルトの 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 はデフォルトのデータベースを使用する
クエリ 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 を永続化に、クエリ Bean をエンティティのクエリに、@Transactional をトランザクションに使用すると、データベースを DTO クエリ、SQL クエリ、SQL 更新 にのみ直接使用することが多いことに注意してください。
設定
データベースインスタンスのプログラムによる設定およびプロパティを介した詳細設定は、次のセクションにあります。
DB (io.ebean.DB)
- DB は、データベースインスタンスのレジストリ(名前でキー付け)を保持します。
- DB は、デフォルトデータベースとして知られている 1 つのデータベースインスタンスを保持します。
- 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 のシ singleton 全く使用する必要がないことに注意してください。使用は完全に任意です。代わりに、Database インスタンスを作成して、必要に応じて ``inject` できます。通常、これは ``Spring`、``Guice`、または同様の DI フレームワークを使用して行います。
どちらも実行でき、Database インスタンスが DB と DI コンテキストに登録され、どちらの方法でもデータベースインスタンスにアクセスできます。
EbeanServer
データベースと EbeanServer は同じものです。
io.ebean.EbeanServer
は、io.ebean.Database
の古い元の名前です。それらは交換に使用できます。そのうち、EbeanServer は廃止され、コードは io.ebean.Database を使用するように移行されます。
Ebean
DB と Ebean は同じものです。
io.ebean.Ebean
は、io.ebean.DB
の古い元の名前です。それらは交換に使用できます。そのうち、Ebean の使用は廃止され、コードは io.ebean.DB を使用するように移行されます。