Mapeo de enumeraciones con @Enumerated

Tutorial de JPA @EnumeratedUna de las ventajas de utilizar enumeraciones en Java, es podemos limitar los valores posibles para una propiedad, forzando a los desarrolladores a utilizar los valores ya definidos y evitando el margen de error.

@Enumerated

Con JPA tambi茅n es posible utilizar enumeraciones y pueden ser de mucha ayuda para asegurar que los programadores persistan un valor v谩lido dentro de una lista previamente definida. JPA nos permite mediante la anotaci贸n @Enumerated definir la forma en que una enumeraci贸n ser谩 persistida, las cuales se explican a continuaci贸n:

  • String: permite persistir la enumeraci贸n por su nombre, lo que significa que ser谩 una columna alfanum茅rica. La anotaci贸n quedar铆a as铆:
    • @Enumerated(value = EnumType.STRING)
  • Ordinal: esta estrategia persiste un valor entero que corresponde al valor ordinal o posici贸n de valor en la enumeraci贸n. La anotaci贸n quedar铆a de la siguiente manera:
    • @Enumerated(value = EnumType.ORDINAL)

Retomaremos la entidad Employee que hemos venido analizando en todo este tutorial y le agregaremos una nueva propiedad que corresponda al status:

Veamos que la propiedad es de tipo Status, la cual es una enumeraci贸n y tiene definida la estrategia String. Tambi茅n podemos ver que est谩 definida la anotaci贸n @Column para definir las caracter铆sticas de la columna.

Por otra parte, tenemos la enumeraci贸n Status la cual tiene los posibles valores ACTIVE e INACTIVE.

La anotaci贸n @Enumerated no es mandataria, pero el hecho de omitirla provocara que JPA determine la estrategia por default, que en nuestro caso ser铆a Ordinal. Por eso yo siempre aconsejo definirla para no tener sorpresas.

Si ejecutamos nuestro el programa para que cree las tablas por nosotros veremos que se creara una columna de tipo VARCHAR ya que definimos String como estrategia. Por otro lado, si utilizamos Ordinal se crear谩 una columna de tipo INT.

Yo siempre recomiendo utilizar Enumeraciones cuando definamos atributos que requieren valores fijos y previamente determinados, como una lista de valores, pero que esta lista no requiera cambiar en tiempo de ejecuci贸n. Una mala opci贸n para utilizarla es para definir listas de valores que en el futuro requieran ampliarse sin necesidad de recompilar.

 

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
 

Art铆culos relacionados

Introducci贸n a Java Transaction API(JTA) JTA聽o Java Transaction API es la encarga de administrar las transacciones del lado del servidor, abstrayendo casi en su totalidad al programador de ab...
EntityManager y el archivo persistence.xml En esta secci贸n hablaremos de c贸mo crear el archivo y como establecer conexi贸n con la base de datos. Cabe mencionar que para fines de practicidad est...
Definir llave primar铆a con @Id Al igual que en las tablas, las entidades tambi茅n requieren un identificador(聽), dicho identificador deber谩 de diferenciar a la entidad del resto. Com...

Oscar Blancarte

Ideol贸gico, Innovador y emprendedor, Padre, Tecn贸logo y Autor, amante de la ciencia y la tecnolog铆a en todos sus colores y sabores. Arquitecto de software & Full Stack Developer con experiencia en la industria del desarrollo de software y la consultor铆a. Amante de la programaci贸n y el Ajedrez.

Deja un comentario

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