JPA @Table y @Entity son dos anotaciones de JPA que a veces nos generan dudas ya que nos hacen pensar que son muy parecidas e incluso tenemos dudas de si hacen falta las dos . Vamos a hablar un poco de ellas . En primer lugar @Table es la anotación que nos permite mapear nuestra entidad contra una tabla que tenga un nombre distinto. Es decir si por ejemplo tenemos la siguiente entidad.
package com.arquitecturajava.aplicacion.adapters.out.jpa;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity(name="Producto")
@Table(name="Productos")
public class ProductoEntity {
@Id
private String numero;
private String concepto;
private double importe;
@ManyToOne
@JoinColumn(name = "categoria_id")
private CategoriaEntity categoria;
public CategoriaEntity getCategoria() {
return categoria;
}
public void setCategoria(CategoriaEntity categoria) {
this.categoria = categoria;
}
public String getNumero() {
return numero;
}
public void setNumero(String id) {
this.numero = id;
}
public String getConcepto() {
return concepto;
}
public void setConcepto(String concepto) {
this.concepto = concepto;
}
public double getImporte() {
return importe;
}
public void setImporte(double importe) {
this.importe = importe;
}
public ProductoEntity(String numero, String concepto, double importe) {
super();
this.numero = numero;
this.concepto = concepto;
this.importe = importe;
}
public ProductoEntity() {
super();
}
}
JPA @Table
Como podemos observar estamos utilizando @Table . Esta anotación nos permite decidir contra que tabla de la base de datos nuestra entidad se va a mapear . En muchas situaciones la entidad no tiene el mismo nombre exacto de la base de datos y nos viene bien usar esta anotación.

JPA @Entity
En muchas ocasiones es un poco más dificil de entender para que se usa @Entity con un name ya que @Entity simplemente registra la entidad. Esto se hace porque hay situaciones en las cuales a nivel de JPA Query Languaje queremos que el nombre de la entidad a nivel de consulta no sea identico al nombre de la clase para permitir simplificar a nivel de consulta

Tengamos siempre en cuenta estas dos anotaciones JPA @Table y JPA @Entity cuando trabajamos con JPA ya que en muchos casos su uso es prácticamente obligatorio ya sea una u otra.
Deja una respuesta