Mappatura dei nomi delle classi di entità ai nomi delle tabelle SQL con JPA

1. Introduzione

In questo breve tutorial impareremo come impostare i nomi delle tabelle SQL utilizzando JPA.

Tratteremo come JPA genera i nomi predefiniti e come fornire quelli personalizzati.

2. Nomi di tabella predefiniti

La generazione del nome della tabella predefinita JPA è specifica della sua implementazione.

Ad esempio, in Hibernate il nome della tabella predefinito è il nome della classe con la prima lettera maiuscola. È determinato tramite il contratto ImplicitNamingStrategy .

Ma possiamo cambiare questo comportamento implementando un'interfaccia PhysicalNamingStrategy .

3. Utilizzo di @Table

Il modo più semplice per impostare un nome di tabella SQL personalizzato è annotare l'entità con @ javax.persistence.Table e definirne il parametro name:

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

Possiamo anche memorizzare il nome della tabella in una variabile finale statica:

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

4. Sovrascrivere il nome della tabella nelle query JPQL

Per impostazione predefinita nelle query JPQL, usiamo il nome della classe di entità:

select * from Article

Ma possiamo cambiarlo definendo il parametro name nell'annotazione @ javax.persistence.Entity :

@Entity(name = "MyArticle")

Quindi cambieremo la nostra query JPQL in:

select * from MyArticle

5. conclusione

In questo articolo, abbiamo appreso come JPA genera nomi di tabelle predefiniti e come impostare nomi di tabelle SQL utilizzando JPA.

Come sempre tutto il codice sorgente è disponibile su GitHub.