Mappage des noms de classes d'entités avec des noms de tables SQL avec JPA

1. Introduction

Dans ce court didacticiel, nous allons apprendre à définir les noms de table SQL à l'aide de JPA.

Nous verrons comment JPA génère les noms par défaut et comment en fournir des personnalisés.

2. Noms de table par défaut

La génération de nom de table par défaut JPA est spécifique à son implémentation.

Par exemple, dans Hibernate, le nom de table par défaut est le nom de la classe avec la première lettre en majuscule. Il est déterminé par le contrat ImplicitNamingStrategy .

Mais nous pouvons changer ce comportement en implémentant une interface PhysicalNamingStrategy .

3. Utilisation de @Table

Le moyen le plus simple de définir un nom de table SQL personnalisé consiste à annoter l'entité avec @ javax.persistence.Table et à définir son paramètre de nom:

@Entity @Table(name = "ARTICLES") public class Article { // ... }

Nous pouvons également stocker le nom de la table dans une variable finale statique:

@Entity @Table(name = Article.TABLE_NAME) public class Article { public static final String TABLE_NAME= "ARTICLES"; // ... }

4. Écraser le nom de la table dans les requêtes JPQL

Par défaut dans les requêtes JPQL, nous utilisons le nom de la classe d'entité:

select * from Article

Mais nous pouvons le changer en définissant le paramètre name dans l' annotation @ javax.persistence.Entity :

@Entity(name = "MyArticle")

Ensuite, nous changerions notre requête JPQL en:

select * from MyArticle

5. Conclusion

Dans cet article, nous avons appris comment JPA génère des noms de table par défaut et comment définir des noms de table SQL à l'aide de JPA.

Comme toujours, tout le code source est disponible sur GitHub.