Перейти к основному содержимому

Сопоставление имен классов сущностей с именами таблиц SQL с помощью JPA

· 2 мин. чтения

1. Введение

В этом кратком руководстве мы узнаем, как задавать имена таблиц SQL с помощью JPA.

Мы рассмотрим, как 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 :

@Entity(name = "MyArticle")

Затем мы изменили бы наш запрос JPQL на:

select * from MyArticle

5. Вывод

В этой статье мы узнали, как JPA генерирует имена таблиц по умолчанию и как устанавливать имена таблиц SQL с помощью JPA.

Как всегда, весь исходный код доступен на GitHub .