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).
1) El modelo Relacional usa SQL --> Tablas
2) El modelo de Objetos usa JP-QL --> Entidades
Tambien, hay dos entornos bien definidos:
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 ).
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
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")
Recordar que toda entidad JPA debe tener un ID único.
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.
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 !