JPAを使用したエンティティクラス名のSQLテーブル名へのマッピング
1. 序章
この短いチュートリアルでは、JPAを使用してSQLテーブル名を設定する方法を学習します。
JPAがデフォルト名を生成する方法と、カスタム名を提供する方法について説明します。
2. デフォルトのテーブル名
JPAのデフォルトのテーブル名の生成は、その実装に固有です。
たとえば、Hibernateでは、デフォルトのテーブル名は、最初の文字が大文字になっているクラスの名前です。 これは、ImplicitNamingStrategyコントラクトによって決定されます。
ただし、PhysicalNamingStrategyインターフェイスを実装することでこの動作を変更できます。
3. @Tableを使用する
カスタムSQLテーブル名を設定する最も簡単な方法は、エンティティに @ javax.persistence.Table で注釈を付け、その名前パラメーターを定義することです。
@Entity
@Table(name = "ARTICLES")
public class Article {
// ...
}
テーブル名を静的final変数に格納することもできます。
@Entity
@Table(name = Article.TABLE_NAME)
public class Article {
public static final String TABLE_NAME= "ARTICLES";
// ...
}
4. JPQLクエリでテーブル名を上書きする
デフォルトでは、JPQLクエリでは、エンティティクラス名を使用します。
select * from Article
ただし、 @javax.persistence.Entityアノテーションでnameパラメーターを定義することで変更できます。
@Entity(name = "MyArticle")
次に、JPQLクエリを次のように変更します。
select * from MyArticle
5. 結論
この記事では、JPAがデフォルトのテーブル名を生成する方法と、JPAを使用してSQLテーブル名を設定する方法を学習しました。
いつものように、すべてのソースコードはGitHubで利用できます。