El mapeo de los objetos a las tablas
En JPA se utilizan anotaciones sobre las clases, atributos y métodos para definir la correspondencia entre los objetos y las tablas.
Clases a tablas y atributos a columnas
Una clase anotada con @Entity
corresponderá con una tabla. Por defecto, el nombre de la clase será el nombre de la tabla y cada uno de los atributos de tipo básico de la clase corresponderá con una columna de la tabla. La siguiente figura muestra un ejemplo simple donde la clase llamada EmployeeEntity
(anotada con @Entity
) tiene tres atributos simples (id
, name
, salary
) es mapeada a una tabla del mismo nombre que tiene tres columnas. También hay una correspondencia entre los tipos de datos: Long
se convierte en BIGINT
, String
se convierte en VARCHAR
y Double
en Double
.
Cada instancia de la clase EmployeeEntity
puede convertirse en una fila en la tabla EMPLOYEEENTITY
. Luego, al cambiar los valores de los atributos de los objetos, estos valores se cambiarán también en la fila donde están guardados.
En la Guía de las anotaciones en JPA y en el wikibook Java Persistence podemos encontrar el detalle y ejemplos de cada una de las anotaciones utilizadas para definir la metadata que le permitirá al proveedor de JPA generar las correspondencias entre el modelo objetos y el modelo relacional. La siguiente tabla presenta un pequeño resumen de algunas de las anotaciones utilizadas en los ejemplos de este libro.
Anotación | Descripción | Atributos |
---|---|---|
@Entity |
Sobre una clase. La clase corresponderá con una tabla en la BD relacional. | name el nombre de la entidad en los queries. Por defecto es el nombre (sin los paquetes) de la clase. |
@Column |
Sobre un atributo (o método get). Especifica la relación entre un atributo de la clase y una columna de la tabla. Por defecto cada atributo será una columna. | name nombre la columna. Por defecto es el mismo nombre del atributo |
nullable indica si el campo de la columna puede ser nulo. Por defecto es true |
||
length para los atributos de tipo String indica la longitud máxima. Por defecto el valor es 255. |
||
@Id |
Sobre un atributo (o método get). Especifica la llave primaria de la entidad. | |
@GeneratedValue |
utilizado para generar el valor de las llaves primarias. | strategy define la estrategia de generación del valor de la llave primaria. Esta estrategia puede ser: |
GenerationType.IDENTITY |
||
GenerationType.TABLE |
||
GenerationType.SEQUENCE |