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.


viernes, 28 de octubre de 2011

Entendiendo JPA en pocos pasos ...


Aquí les dejo un resumen bastante 

ilustrativo de como entender el paso de las tecnologías como JDBC e Ibatis a un modelo de Objetos con JPA.



La verdad que el plasmar el  gráfico y la explicación de esa manera no se me habían ocurrido antes, pero más vale tarde que nunca. Y aqui va:





Punto #1:
JPA = Java Persistence API, es una especificación Java basada en el JSR 220.

Al ser una especificación, tiene implementaciones, siendo las más comúnmente utilizadas: EclipseLink (cuyo core se basa en Toplink), Hibernate y OpenJPA.



Punto #2:
En nuestros cursos tradicionales de Base de Datos, aprendimos que una base de datos está compuesta por tablas, las cuales tiene filas (rows) y columnas (fields) y que el modelo actualmente utilizado es el modelo Relacional (RDBMS) que usualmente se modela e implementa utilizando las 3 primeras formas normales ( recordar que hay una 4ta y 5ta forma normal pero que no se utilizan con mucha frecuencia ).




Punto #3:
Cuando pasamos a un modelo OR-M ( object Relational - Mapping ) significa que nuestra fuente de datos está en el modelo relacional, pero la lógica de nuestra aplicación maneja Objetos ( en este caso objetos Java ) y que por tanto, utilizamos una implementación de la API JPA para ello (cualquiera de las tres mencionadas al inicio).


Dos cosas nos diferencian en este esquema:
1) El modelo Relacional usa SQL --> Tablas
2) El modelo de Objetos usa JP-QL --> Entidades


Tambien, hay dos entornos bien definidos:
1) Las tablas viven dentro de una base de datos ( y esta a su vez dentro de un manejador de base de datos RDBMS)
2) Las entidades viven dentro de un "Entity Manager" (que es similar a un SqlClientMap de Ibatis ).


Punto #4
Es así que una "Entidad" JPA equivale a dos cosas:
1)  A la definición de una clase Java que sigue las reglas de los JavaBeans: implementa Serializable, constructor por defecto y getters/setters.
2) Al momento de instanciar una Entidad (clase), dicha instancia (objeto) equivale a un registro en la Tabla relacional.


Entonces, ¿ cómo convierto un JavaBean en Entidad ? ... Fácil, le agregamos dos anotaciones :@Entity y @Id
Recordar que toda entidad JPA debe tener un ID único.

Según el gráfico, JPA interpreta que:
1) La entidad se llama igual que la clase.
2) La Tabla en la base de datos se llama igual que la clase.


Si queremos hacer cambios, podemos usar:
@Entity (name="nombre-entidad" )
@Table (name="nombre tabla")

Punto #5
Además, necesitamos registrar la Entidad en el archivo "persistence.xml".
Ahora bien, si no queremos utilizar anotaciones, tendremos que escribir el XML del archivo "orm.xml" (que me parece más tedioso ).




El archivo persistence.xml contiene la definición de la "Persistence Unit" a partir de la cual se genera un "Entity Manager". La explicación será materia de un siguiente post.

Hasta aqui, creo que es bastante sencillo. La parte más "complicada" son las relationships entre entidades que veremos en un siguiente post.

No te olvides de dejar un comentario. ¡ Gracias !

1 comentario:

  1. Excelente explicación acerca de JPA, en términos simples y concretos!

    ResponderEliminar