はじめよう
このページについて
このガイドでは、開発環境の設定方法を説明し、Domaの基本的な機能を紹介します。
JDKのインストール
最初に JDK 17 以降をインストールする必要があります。
サンプルプロジェクトの入手
サンプルプロジェクトを入手するには、次のコマンドを使用して、getting-started リポジトリのクローンを作成し、新しいディレクトリに移動します。
$ git clone https://github.com/domaframework/getting-started.git
$ cd getting-started
次のコマンドが成功すれば、プロジェクトのセットアップは完了です。
$ ./gradlew build
注釈
Windowsユーザーは、./gradlew build の代わりに gradlew build を実行してください。
サンプルプロジェクトの構造
getting-start サンプルは、Java-17 サブプロジェクトを含む Gradle マルチプロジェクトです。このガイドでは、java-17 サブプロジェクトに焦点を当てます。
プロジェクトを IDE にインポートする
Eclipse
Eclipse 4.23.0でテスト済みです。getting-started プロジェクトを Gradle プロジェクトとしてインポートしてください。
注釈
SQL文をファイルで管理する場合、Doma Tools が役立つかもしれません。
IntelliJ IDEA
IntelliJ IDEA Community 2023.3.4 でテストされています。プロジェクトを Gradle プロジェクトとしてインポートしてください。
注釈
次のIntelliJ IDEAプラグインを使用してDomaをサポートできます。機能が重複しているため、いずれか一方をお選びください。
プログラミングスタイル
Domaは、DSLとDAOの2つのプログラミングスタイルをサポートしています。 両方のスタイルを一緒に使用することで、そのメリットを最大限に引き出すことをお勧めします。
DSLスタイルは型安全なCriteria APIを使用しており、シンプルな動的SQLを自動生成する点で優れています。DAOスタイルはSQLステートメントをJavaのインターフェースメソッドにマップし、追加、更新、削除操作の標準的なSQLを自動生成することにも長けており、複雑なSQLを手動で書く場合にも役立ちます。
DSL スタイル
DSL スタイルでは、boilerplate.java17.repository.EmployeeRepository と :クエリDSL を使った例を使用します。
SELECT
SELECT ステートメントを実行して Java オブジェクトの結果を取得するには、次の例に従います。
public Employee selectById(Integer id) {
var e = new Employee_();
return queryDsl.from(e).where(c -> c.eq(e.id, id)).fetchOne();
}
クエリを組み立てるために Employee エンティティクラスのメタモデルクラスである Employee_ を使用します。メタモデルクラスは、アノテーション処理を通じて自動生成されるクラスです。
QueryDsl クラスの queryDsl インスタンスは、Criteria API の開始点として機能します。
上記のコードは次の SQL ステートメントを生成します。
select t0_.id, t0_.name, t0_.age, t0_.version from Employee t0_ where t0_.id = ?
DELETE
DELETE ステートメントを発行するには、次のように記述します。
public void delete(Employee employee) {
var e = new Employee_();
queryDsl.delete(e).single(employee).execute();
}
INSERT
INSERT ステートメントを発行するには、次のように記述します。
public void insert(Employee employee) {
var e = new Employee_();
queryDsl.insert(e).single(employee).execute();
}
UPDATE
UPDATE ステートメントを発行するには、次のように記述します。
public void update(Employee employee) {
var e = new Employee_();
queryDsl.update(e).single(employee).execute();
}
DAO スタイル
いくつかの例は boilerplate.java17.dao.EmployeeDao にあります。詳細については、DAOインタフェース および SQLテンプレート を参照してください。
SELECT (DAO)
DAO スタイルで SELECT ステートメントを発行して Java オブジェクトを取得するには、SQL テンプレートのテキストブロックで @Sql アノテーションを使用します。
@Sql("""
select
/*%expand*/*
from
employee
where
id = /* id */0
""")
@Select
Employee selectById(Integer id);
このSQLテンプレートには、/*%expand*/ と /* id */ の二つの特別な式が含まれています。SQLテンプレートの処理中に、/*%expand*/ とその後の * は完全なカラムリストに置き換えられます。同様に、/* id */ とその後の 0 はバインド変数 ? に置き換えられます。バインドされる値は selectById メソッドの id パラメータです。
上記のコードは次の SQL ステートメントを生成します。
select
id, name, age, version
from
employee
where
id = ?
DELETE (DAO)
DELETE ステートメントを発行するには、次のように記述します。
@Delete
int delete(Employee employee);
INSERT (DAO)
INSERT ステートメントを発行するには、次のように記述します。
@Insert
int insert(Employee employee);
UPDATE (DAO)
UPDATE ステートメントを発行するには、次のように記述します。
@Update
int update(Employee employee);
次のステップ
他のサンプルプロジェクトを参照してください。