jueves, 27 de abril de 2017

Empezando Java Persistence API (JPA)

   Java EE integra una librería que ayuda al programador en java, en el manejo de datos que deben ir a una base de datos, pero existe un detalle en este dilema, por un lado tradicionalmente los datos se reflejan en un diseño en una Base de datos por medio de un diagrama Entidad-Relación, y por otro lado, desde el punto de vista de programación java, estos datos estan contenidos y representados en clases, y las classes no siguen las mismas reglas y/o formato que las Entidades en la Base de datos, entonces hablamos de un tradicional problema de impedancia en la representación de los datos, ya que por un lado, en java, las classes tienen capacidades funcionales de manejo dinámico de comportamiento de las clases, que no tiene mucho enfasis en los datos que contiene la clase y que se desean persistir o sea guardar en la base de datos, y por el lado de la base de datos, las entidades que representan los datos almacenados. Asi que por lo general se debe de hacer una interfaz entre las clases de java y las entidades de la base de datos, esto se hace haciendo una capa de interfaz con programación java entre las clases java y las tablas de la base de datos, implementando esto con alguna herramienta que hable java-base da datos, como puede ser JDBC. esto implica tambien programar una serie de utilidades que controlen concurrencia, bloqueo... de los datos. Todo esto se puede eliminar haciendo uso de la librería de java JPA (Java Persistence API) que contempla muchas de las operaciones requeridad en el proceso de guardar, recuperar, actualizar datos de la base de datos. Estas operaciones no son pocas, ni sencillas de controlar, sobre todo cuando se tienen entidades relacionadas a varios niveles, ya que para esto existen varias estrategías de control con sus pros y contras, que se dejan para otro apartado.
  Para empezar se suguiere asimilar los conceptos de JPA que se describen sintetizados en el manual de especificación de Java EE que se puede encontrar en el portal de oracle. aquí se tomas 20 páginas para describirlo.
  Posteriormente un documento que amplía estos conceptos es su propia especificación JSR 338 (java specification request) tambien del portal de oracle se obtiene. este documento es de 570 páginas.

Para más información
Java Persistence 2.1 API specification:
http://jcp.org/en/jsr/detail?id=338
■ EclipseLink, the Java Persistence API implementation in GlassFish Server:
http://www.eclipse.org/eclipselink/jpa.php
■ EclipseLink team blog:
http://eclipselink.blogspot.com/
■ EclipseLink wiki documentation:
http://wiki.eclipse.org/EclipseLink

  Adicionalmente a estas especificaciones están las implementaciones de esta especificacion, estas son el software o librerías que se pueden descargar, entre estas estan ElicpseLink, TopLink, Hibernate, Apache OpenJPA, etc. entre ellos existe una permanente competencia por agregar servicios de persistencia que van más alla de la especificacion estandar JSR 338, como son MOXy, EIS, SDO, DBWS etc y algunas variantes de conceptos. Por ejemplo Hibernate ofrece varios servicios y formas adicionales, PERO la escencia de la persistencia de datos esta en la especificación, esto hace que sea independiente a cambios en tecnología o implementaciones que hagan caducar estas implementaciones adicionales y dejar fuera a la aplicación desarrollada.


No hay comentarios:

Publicar un comentario