Hibernate ORM は Java 用の強力なオブジェクト/リレーショナル マッピング ソリューションであり、アプリケーション、ライブラリ、およびフレームワークの永続化ロジックの開発を容易にします。
Hibernate は、Java のオブジェクト/リレーショナル永続性のための標準 API である JPA を実装していますが、仕様を超える広範な機能と API のセットも提供します。
詳細については、Hibernate.org を参照してください。
Hibernate は、CI ニーズに合わせて Jenkins と GitHub Actions の両方を使用します。見る
ジェンキンスの求人
GitHub アクションのジョブ
ビルドには少なくとも Java 11、最大で Java 17 が必要です。
Hibernate はビルド ツールとして Gradle を使用します。 Gradle を初めて使用する場合は、以下の「Gradle 入門」セクションを参照してください。
貢献者は貢献ガイドを読む必要があります。
IntelliJ または Eclipse を開発環境としてセットアップするためのガイドを参照してください。
Gradle ビルド ツールには素晴らしいドキュメントがあります。特に不可欠なものは 2:
Gradle ユーザー ガイドは、Gradle のすべての機能を説明するトピック別のアプローチに従っているという点で、典型的なユーザー ガイドです。
Gradle DSL ガイドはユニークであり、Gradle の特定の側面を素早く理解するのに優れています。
Gradle を初めて使用する開発者やコントリビューターが生産性を迅速に高めるために知っておく必要がある基本について説明します。
注記 | プロジェクトは Gradle Wrapper を定義します。このセクションの残りの部分は、ラッパーを介して実行されることを前提としています。 |
Gradle は、ビルド タスクの概念を使用します (Ant ターゲットまたは Maven フェーズ/ゴールに相当)。利用可能なタスクのリストは、次の方法で取得できます。
グラドルタスク
すべてのモジュールにわたってタスクを実行するには、ルート ディレクトリからそのタスクを実行するだけです。 Gradle は各サブプロジェクトにアクセスし、サブプロジェクトでタスクが定義されている場合はそのタスクを実行します。特定のモジュールでタスクを実行するには、次のいずれかを実行できます。
そのモジュールディレクトリにcd
てタスクを実行します
「タスクパス」という名前を付けます。たとえば、ルート ディレクトリからhibernate-coreモジュールのテストを実行するには、 gradle hibernate-core:test
と言うことができます。
Hibernate の構築で使用する一般的なタスクには次のものがあります。
build - このプロジェクトをアセンブル (jar) してテストします
コンパイル- メインとテストの両方からのステージング リソースを含むすべてのコンパイル タスクを実行します。
jar - コンパイルされたすべてのクラスを含む jar アーカイブを生成します
test - テストを実行します
publicToMavenLocal - プロジェクト jar をローカル Maven キャッシュ (別名 ~/.m2/repository) にインストールします。 Gradle がこれを使用することはありませんが、他のローカルの Maven ベースのビルドを使用してビルドをテストする場合に役立つ場合があることに注意してください。
clean - ビルド ディレクトリをクリーンアップします。
特定のデータベースに対するテストは、次の 2 つの異なる方法で実行できます。
後ほど…
Hibernate ビルドではdatabases.gradle
でいくつかのデータベース テスト「プロファイル」を定義します。これらのプロファイルは、JVM システム プロパティ ( -D
) または Gradle プロジェクト プロパティ ( -P
) として渡すことができるdb
build プロパティを使用して、名前によってアクティブ化できます。以下の例では、Gradle プロジェクト プロパティのアプローチを使用しています。
gradle クリーン ビルド -Pdb=pgsql
IDE からテストを実行するには、プロパティの展開が確実に行われるようにする必要があります。次のコマンドを使用します。
gradle クリーンコンパイル -Pdb=pgsql
注: Maven Central 経由で利用できない JDBC ドライバーに対してテストを実行している場合は、これらのドライバーをローカルの Maven リポジトリ キャッシュ (~/.m2/repository) に追加するか、(より良い) 個人用 Maven リポジトリ サーバーに追加してください。
databases.gradle
プロファイルで構成されている特定のデータベースで任意のテストを実行できます。
次のコマンドを実行するだけです。
./gradlew setDataBase -Pdb=pgsql
または、ショートカット バージョンを使用することもできます。
./gradlew sDB -Pdb=pgsql
これは、テストしたいモジュールから、またはhibernate-orm
ルート フォルダーから実行できます。
その後、IDE から任意のテストを選択し、通常どおり実行します。 Hibernate は、 setDataBase
Gradle タスクによって設定されたhibernate.properties
ファイルからデータベース構成を選択します。
Docker が利用可能な場合に備えて、データベースに対してテストできるように、すべてのデータベースをローカルにインストールする必要はありません。 docker_db.sh
スクリプトを使用すると、テストに使用できる事前構成されたデータベースを起動できます。
次のコマンドを実行するだけです。
./docker_db.sh postgresql
引数を省略すると、可能なオプションのリストが出力されます。
データベースが適切に起動すると、接尾辞が_ci
の特別なプロファイル (PostgreSQL の場合はpgsql_ci
など) を使用してテストを実行できます。システム プロパティdbHost
使用すると、Docker ホストの IP アドレスを構成できます。
テストを実行するためのコマンドは次のようになります。
./gradlew テスト -Pdb=pgsql_ci "-DdbHost=192.168.99.100"
次の表は、ローカルでテストできるさまざまなデータベースのコマンドのリストを示しています。
データベース | docker_db.sh | グラドルコマンド |
---|---|---|
H2 | - | |
HSQLDB | - | |
アパッチダービー | - | |
MySQL | | |
マリアDB | | |
PostgreSQL | | |
エンタープライズDB | | |
オラクル |
| |
DB2 | | |
SQLサーバー |
| |
サイベース ASE (jTDS) | | |
Sybase ASE (jConnect) | | |
SAP ハナ |
| |
ゴキブリDB | | |
TiDB | | |
インフォミックス |
| |
docker
によって開始されたコンテナを停止するには、次のコマンドを使用します
docker stop $container_name
podman
使用している場合は、 podman
をdocker
コマンドに置き換えます。
例: mariadb コンテナを停止する場合
docker stop mariadb