Bienvenida

Como todo en la vida, la innovación es la clave del éxito por lo que nos hemos visto en la necesidad de "evolucionar" este blog para abarcar muchos otros temas que estaban quedando de lado en nuestros cursos "oficiales".

Si deseas aprender o profundizar algunos temas en particular, no dudes en contactarnos.


martes, 31 de mayo de 2011

JPA : Generación de Llave Primaria

En este post comentaremos acerca de las modalidades para la generación de un PK simple ( ojo que también hay PK's compuestas ).

Además de la anotación @Id se emplea la anotación @GeneratedValued con el atributo "strategy". Básicamente hay cuatro valores para el atributo:
  • strategy=GenerationType.AUTO
  • strategy=GenerationType.TABLE
  • strategy=GenerationType.SEQUENCE
  • strategy=GenerationType.IDENTITY

El AUTO le dice a JPA que busque la mejor forma de generación de secuencias. Dependiendo de la base de datos a usar se puede manejar "secuencias" (oracle) o "autoincrementos" (MySQL). Para no complicarnos mucho, en este post sólo mencionaremos el uso de la opción TABLE, que es una buena alternativa cuando queremos controlar la generación de la secuencias en una tabla ( algo así como una tabla de correlativos ).

Forma de utilización #1:
Si sólo se especifica la anotación sin indicar la tabla, JPA busca (o genera ) una tabla llamada "sequence". La tabla requiere de dos columnas: una conteniendo el identificador para generar la secuencia y la otra columna contiene el último valor generado. Cada fila de la tabla es un generador diferente para los ID’s.

Ejemplo:



Forma de utilización #2:
¿ Qué sucede si deseamos indicar una tabla específica ?. Debemos agregar una anotación más:  @TableGenerator 
Ahora debemos indicar algunas características de la tabla (que si bien sigue manteniendo la estructura mencionada en la forma de uso #1 ), requiere el "mapeo" de algunas cosas:


A diferencia de la estrategia IDENTITY, en ésta estrategia el valor de la PK ya está disponible desde el momento en que se hace el persist.

¿ Que opinas ?

Por favor prueba las otras estrategias de generación de PK y coloca tus comentarios.



No hay comentarios:

Publicar un comentario