Declarar entidades con @Entity

Tutorial de JPA @EntityUna de las grandes ventajas de JPA es que nos permite manipular la base de datos a través de objetos, estos objetos son conocidos como Entity, las cuales son clases comunes y corrientes también llamada POJO’s (Plain Old Java Objects), estas clases tiene la particularidad de ser clases que están mapeadas contra una tabla de la base de datos, dicho mapeo se lleva a cabo generalmente mediante Anotaciones. Dichas anotaciones brindan los suficientes metadatos como para poder por relacionar las clases contra las tablas y las propiedades contra las columnas. Es de esta forma que JPA es capaz de interactuar con la base de datos a través de las clases.

A lo largo de este capítulo y los siguientes estaremos estudiando las diversas anotaciones que nos permitirán crear nuestras Entity así como relacionar entidades con otras.

Anotación @Entity

Como ya discutimos hace un momento, las entidades son POJO’s por lo que son simples clases Java como cualquier otra, sin embargo, JPA debe de ser capaz de identificar que clases son Entity para de esta forma poderlas administrar. Es aquí donde nace la importancia de la anotación @Entity, esta anotación se debe de definir a nivel de clase y sirve únicamente para indicarle a JPA que esa clase es una Entity, veamos el siguiente ejemplo:

package com.obb.jpa.jpaturorial.entity;

import java.util.Calendar;

/**
 *
 * @author Oscar Blancarte
 */
public class Employee {
    private Long id;
    private String name; 

    /**
     * GETs and SETs
     */
}

En el ejemplo vemos una clase común y corriente la cual representa a un Empleado (Employee), hasta este momento la clase Employee, no se puede considerar una Entity, pues a un no tiene la anotación @Entity que la señale como tal. Ahora bien, si a esta misma clase le agregamos la anotación @Entity le estaremos diciendo a JPA que esta clase es una Entidad y deberá ser administrada por EntityManager, veamos el siguiente ejemplo:

package com.obb.jpa.jpaturorial.entity;

import java.util.Calendar;

/**
 *
 * @author Oscar Blancarte
 */
@Entity
public class Employee {
    private Long id;
    private String name; 

    /**
     * GETs and SETs
     */
}

En este punto la clase ya se puede considerar una Entidad, pero faltaría un paso más para que JPA cargue esta clase como Entidad. Todas las clases entidades que vamos a utilizar en nuestro proyecto deben de estar contenidas en la unidad de persistencia (PersistenceUnit) que definimos en el archivo persistence.xml, por lo cual tendremos que retornar a este archivo y agregar la clase la clase, para esto nos ubicaremos en la pestaña de Design y presionaremos el boton Add Class, esto nos mostrara un pequeño dialogo con todas las entidades de nuestro proyecto, seleccionamos la clase Employee y presionamos OK, al terminar la pantalla se deberá ver de la siguiente manera:

persistencexml add class

Cabe mencionar que este procedimiento lo debemos repetir por cada nueva Entidad que agreguemos a nuestro proyecto, de lo contrario el EntityManager nos dirá que no existe la Entidad. Si el hecho de tener que registrar cada entidad se te hace molesto o repetitivo, puedes seleccionar la opción Include All Entity Classes in “JPATutorial” Module que se encuentra en el mismo persistence.xml, esto hará que todas las entidades marcadas como @Entity sean automáticamente manejadas por el EntityManager sin la necesidad de tener que agregar manualmente cada Entity que vamos creando. En lo particular suelo seleccionar la opción para evitar tener que registrarlas.

Un aspecto importante cuando definimos entidades es si deberemos implementar la interface serializable. En general las opiniones esta divididas, algunos dicen siempre deberán implementarla y otros dicen que no siempre, la realidad es que la interface serializable solo es necesario cuando los objetos son transmitidos fuera de nuestra máquina virtual, como sería el caso del uso de interfaces remotas de EJB, pero por lo general no será necesario implementarla.

Tambíen los quiero invitar a ver mi curso de JPA, donde explico todos estos temas aplicados con API REST, https://codmind.com/courses/jpa

👉👉 Los invito a mi Curso de Mastering JPA, donde habla de todos estos temas y crearemos un API REST para probar todos los conceptos de persistencia.
👈👈

Ya con esta breve explicación ya podemos entender el concepto básico de las entidades, pero falta relacionar la clase con la tabla de la base de datos, y es precisamente lo que veremos en la siguiente sección del tutorial.

NOTA: Este artículo es solo una sección del Tutorial de JPA, para ver el contenido completo de este tutorial regresa al Índice en el botón de abajo.


AnteriorÍndiceSiguiente

13 thoughts to “Declarar entidades con @Entity”

  1. Hola que tal. Tengo el siguiente problema: ya cree las clases Entity pero cuando le doy a “Add Class” en la unidad de persistencia no me aparece ninguna clase para añadir

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *