Hibernate で TiDB に接続する
TiDBはMySQL互換のデータベースであり、 休止状態人気のオープンソースJava ORMです。Hibernateはバージョン6.0.0.Beta2
以降、TiDBの機能に適したTiDB方言をサポートしています。
このチュートリアルでは、TiDB と Hibernate を使用して次のタスクを実行する方法を学習します。
- 環境を設定します。
- Hibernate を使用して TiDB クラスターに接続します。
- アプリケーションをビルドして実行します。オプションで、基本的なCRUD操作用のサンプルコードスニペット見つけることもできます。
注記:
このチュートリアルは、TiDB Cloud Serverless、 TiDB Cloud Dedicated、および TiDB Self-Managed で動作します。
前提条件
このチュートリアルを完了するには、次のものが必要です。
- Java Development Kit (JDK) 17以上。ビジネスおよび個人の要件に応じて、 オープンJDKまたはオラクル JDK選択できます。
- メイヴン 3.8以上。
- ギット 。
- TiDB クラスター。
TiDB クラスターがない場合は、次のように作成できます。
- (推奨) TiDB Cloud Serverless クラスターの作成に従って、独自のTiDB Cloudクラスターを作成します。
- ローカルテストTiDBクラスタをデプロイまたは本番のTiDBクラスタをデプロイに従ってローカル クラスターを作成します。
サンプルアプリを実行してTiDBに接続する
このセクションでは、サンプル アプリケーション コードを実行して TiDB に接続する方法を説明します。
ステップ1: サンプルアプリのリポジトリをクローンする
サンプル コード リポジトリのクローンを作成するには、ターミナル ウィンドウで次のコマンドを実行します。
git clone https://github.com/tidb-samples/tidb-java-hibernate-quickstart.git
cd tidb-java-hibernate-quickstart
ステップ2: 接続情報を構成する
選択した TiDB デプロイメント オプションに応じて、TiDB クラスターに接続します。
- TiDB Cloud Serverless
- TiDB Cloud Dedicated
- TiDB Self-Managed
クラスターページに移動し、ターゲット クラスターの名前をクリックして概要ページに移動します。
右上隅の「接続」をクリックします。接続ダイアログが表示されます。
接続ダイアログの構成が動作環境と一致していることを確認します。
接続タイプは
Public
に設定されていますブランチは
main
に設定されています接続先が
General
に設定されていますオペレーティング システムは環境に適合します。
ヒント:
プログラムが Windows Subsystem for Linux (WSL) で実行されている場合は、対応する Linux ディストリビューションに切り替えます。
ランダムなパスワードを作成するには、 「パスワードの生成」をクリックします。
ヒント:
以前にパスワードを作成したことがある場合は、元のパスワードを使用するか、 「パスワードのリセット」をクリックして新しいパスワードを生成することができます。
次のコマンドを実行して
env.sh.example
コピーし、名前をenv.sh
に変更します。cp env.sh.example env.sh対応する接続文字列をコピーして、
env.sh
ファイルに貼り付けます。結果の例は次のとおりです。export TIDB_HOST='{host}' # e.g. gateway01.ap-northeast-1.prod.aws.tidbcloud.com export TIDB_PORT='4000' export TIDB_USER='{user}' # e.g. xxxxxx.root export TIDB_PASSWORD='{password}' export TIDB_DB_NAME='test' export USE_SSL='true'プレースホルダー
{}
、接続ダイアログから取得した接続パラメータに置き換えてください。TiDB Cloud Serverless は安全な接続を必要とします。そのため、
USE_SSL
の値をtrue
に設定する必要があります。env.sh
ファイルを保存します。
クラスターページに移動し、ターゲット クラスターの名前をクリックして概要ページに移動します。
右上隅の「接続」をクリックします。接続ダイアログが表示されます。
接続ダイアログで、 [接続タイプ]ドロップダウン リストから[パブリック]を選択し、 [CA 証明書]をクリックして CA 証明書をダウンロードします。
IP アクセス リストをまだ設定していない場合は、 「IP アクセス リストの設定」をクリックするか、手順IPアクセスリストを設定するに従って、最初の接続の前に設定してください。
TiDB Cloud Dedicatedは、パブリック接続タイプに加えて、プライベートエンドポイントとVPCピアリング接続タイプもサポートしています。詳細については、 TiDB Cloud専用クラスタに接続するご覧ください。
次のコマンドを実行して
env.sh.example
コピーし、名前をenv.sh
に変更します。cp env.sh.example env.sh対応する接続文字列をコピーして、
env.sh
ファイルに貼り付けます。結果の例は次のとおりです。export TIDB_HOST='{host}' # e.g. tidb.xxxx.clusters.tidb-cloud.com export TIDB_PORT='4000' export TIDB_USER='{user}' # e.g. root export TIDB_PASSWORD='{password}' export TIDB_DB_NAME='test' export USE_SSL='false'プレースホルダー
{}
、接続ダイアログから取得した接続パラメータに置き換えてください。env.sh
ファイルを保存します。
次のコマンドを実行して
env.sh.example
コピーし、名前をenv.sh
に変更します。cp env.sh.example env.sh対応する接続文字列をコピーして、
env.sh
ファイルに貼り付けます。結果の例は次のとおりです。export TIDB_HOST='{host}' export TIDB_PORT='4000' export TIDB_USER='root' export TIDB_PASSWORD='{password}' export TIDB_DB_NAME='test' export USE_SSL='false'プレースホルダー
{}
接続パラメータに置き換え、USE_SSL
をfalse
に設定してください。TiDBをローカルで実行している場合、デフォルトのホストアドレスは127.0.0.1
で、パスワードは空です。env.sh
ファイルを保存します。
ステップ3: コードを実行して結果を確認する
サンプル コードを実行するには、次のコマンドを実行します。
make期待出力.txtチェックして、出力が一致するかどうかを確認します。
サンプルコードスニペット
次のサンプル コード スニペットを参照して、独自のアプリケーション開発を完了することができます。
完全なサンプル コードとその実行方法については、 tidb-samples/tidb-java-hibernate-クイックスタートリポジトリを参照してください。
TiDBに接続する
Hibernate 構成ファイルhibernate.cfg.xml
を編集します。
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.dialect">org.hibernate.dialect.TiDBDialect</property>
<property name="hibernate.connection.url">${tidb_jdbc_url}</property>
<property name="hibernate.connection.username">${tidb_user}</property>
<property name="hibernate.connection.password">${tidb_password}</property>
<property name="hibernate.connection.autocommit">false</property>
<!-- Required so a table can be created from the 'PlayerDAO' class -->
<property name="hibernate.hbm2ddl.auto">create-drop</property>
<!-- Optional: Show SQL output for debugging -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
</session-factory>
</hibernate-configuration>
${tidb_jdbc_url}
${tidb_user}
TiDBクラスタの実際の値に置き換えてください。次に、次${tidb_password}
関数を定義します。
public SessionFactory getSessionFactory() {
return new Configuration()
.configure("hibernate.cfg.xml")
.addAnnotatedClass(${your_entity_class})
.buildSessionFactory();
}
この関数を使用する場合、 ${your_entity_class}
独自のデータエンティティクラスに置き換える必要があります。複数のエンティティクラスがある場合は、それぞれに.addAnnotatedClass(${your_entity_class})
ステートメントを追加する必要があります。上記の関数は、Hibernate を設定する方法の1つにすぎません。設定で問題が発生した場合、または Hibernate について詳しく知りたい場合は、 Hibernateの公式ドキュメントを参照してください。
データの挿入または更新
try (Session session = sessionFactory.openSession()) {
session.persist(new PlayerBean("id", 1, 1));
}
詳細については、 データを挿入するおよびデータを更新するを参照してください。
クエリデータ
try (Session session = sessionFactory.openSession()) {
PlayerBean player = session.get(PlayerBean.class, "id");
System.out.println(player);
}
詳細についてはクエリデータを参照してください。
データを削除する
try (Session session = sessionFactory.openSession()) {
session.remove(new PlayerBean("id", 1, 1));
}
詳細についてはデータを削除するを参照してください。
次のステップ
- Hibernateのドキュメントから Hibernate の使い方を詳しく学びます。
- 開発者ガイドのデータを挿入する 、 データを更新する 、 データを削除する 、 単一テーブルの読み取り 、 取引 、 SQLパフォーマンスの最適化などの章で、 TiDB アプリケーション開発のベスト プラクティスを学習します。
- プロフェッショナルTiDB開発者コースを通じて学び、試験に合格するとTiDB認定獲得します。
- Java開発者向けコースを通じて学習します: JavaからTiDBを操作する .
ヘルプが必要ですか?
不和またはスラック 、あるいはサポートチケットを送信するについてコミュニティに質問してください。