domingo, 17 de marzo de 2013

JPA con MySQL

JPA (Java Persistence API): Es la API de persistencia de datos desarrollada para la plataforma Java EE.

Es un framework del lenguaje de programación Java que maneja datos relacionales en aplicaciones usando la Plataforma Java en sus ediciones Standard (Java SE) y Enterprise (Java EE).

El objetivo que persigue el diseño de esta API, es no perder las ventajas de la orientación a objetos al interactuar con una base de datos relacional, y permitir usar objetos regulares (conocidos como POJOs --> un POJO es una palabra utilizada por programadores Java para enfatizar el uso de clases simples y que no dependen de un framework en especial).

Referencia: http://es.wikipedia.org/wiki/Java_Persistence_API

JPA fue creado con java EE5 para resolver el problema de persistencia de datos. JPA es una abstracción arriba de JDBC que hace posible ser independiente de SQL. Todas las clases y anotaciones de esta API están en el paquete javax.persistence.

Los principales componetes de JPA son:
  • ORM, que es el mecanismo para mapear objetos a datos almacenados en una base de datos relacional.
  • Un administrador de entidades realiza operaciones sobre  una base de datos relacional, tal como crear leer, actualizar y eliminar.
  • El Java Persistence Query Languaje (JPQL), te permite recuperar con un lenguaje orientado a objetos.
  • Transacciones y mecanismos de bloqueos concurrente cuando acceden a datos proporcionados por Java Transaction API (JTA)
Ahora si vamos a crear nuestro proyecto con Netbeans 7.3, sino lo pueden hacer con Eclipse da igual para este pequeño ejemplo.

1) Crear una base de datos llamada ejemplo
2) Crear una tabla Innodb de nombre Persona con los siguientes datos.



3) Ahora vamos a crear una aplicación Java Standar Edition para ellos vamos al menú File (Archivo) --> New Project (Nuevo proyecto)


4) Eligen la ruta donde se guardará su proyecto.



5) Para poder realizar el enlace al motor de base de datos MySQL debemos incluir el JDBC, para ellos damos click derecho sobre la carpeta Libraries (Librerías)


6) Debe salir ahora una pantalla igual a la que muestro, deben buscar el nombre MySQL JDBC Driver



7) Ahora el proyecto debe quedar de la siguiente forma.


8) Ahora vamos a crear nuestra clase entidad y clase controladora. Para realizar esto y ordenar nuestro proyecto debemos crear dos paquetes de nombre Entidad y Control, entonces debemos dar click derecho sobre la carpeta Source Packages (Ruta de paquetes).




(Repitan el mismo proceso para el paquete Control)

9) Ahora debemos crear nuestra clase entidad, para esto damos click derecho sobre el paquete entidad, elegimos el menú New (Nuevo) --> Entiti classes from database (Clases entidad a partir de una base de datos)



Ahora sólo deben seguir las imágenes



Luego presionan el botón Next (Siguiente)


Ahora sólo deben configurar su conexión a su base de datos, en mi caso cambio la opción Database con el valor mysql y la cambio por la base de datos ejemplo.


Presionan luego a todo Next (Siguiente) y luego presionan Finish (Terminar)

10) Ahora debemos elegir las tablas para este ejemplo, elijo la tabla Persona y presiono el botón add (agregar)


Luego presionan el botón Next (Siguiente) y les aparecerá la siguiente pantalla donde sólo deben presionar el botón Finish (Terminar)


Podemos ver que Netbeans nos ha creado nuestra clase entidad con todas las anotaciones generales, entre ellas la más importante la anotación @Entity que le dice a la clase que es una clase entidad.



11) Ahora debemos crear nuestra clase Control, para esto debemos para esto damos click derecho sobre el paquete Control y elegimos la opción Other (Otro)


Elegimos la opción Persistence (Persistencia) y elegimos la opción JPA Controller Classes from Entity Classes (Clases controladoras JPA a partir de una clase entidad) y presionan el botón Next (Siguiente)


Elegimos la única clase entidad, que en este ejemplo es Entidad.Persona y presionamos el botón Add (Agregar) y presionamos el botón Next (Siguiente) y luego Finish (Terminar)


12) Así es como queda nuestro proyecto hasta el momento


13) Ahora mostramos el código como debe quedar nuestra clase.



Ya para terminar, yo no elegiría utilizar las clases hechas por el propio IDE por motivo que crea los métodos de manera ineficiente, por cada insert, update, delete realiza un begin y luego un commit o rollback.

Esto como sabemos sólo se debería hacer cuando sean dos o más transacciones.

Dejo una parte del código generado.

Nos vemos hasta la próxima su amigo Carlos Zacarías