Introduccion A JPA
Introduccion A JPA
Introduccion A JPA
Este ejemplo de CMS (cuyo codigo dejo al final del articulo) sera muy simple.
He preferido que el ejemplo no se complique con restricciones o constraints de
la base de datos, asi que no existen tampoco claves foraneas a otras tablas.
De manera que sera dificil que nos de un error, cuando intentemos insertar
algun contenido. Tambien en esta primera version solo os dejare una
aplicacion en modo consola (un interprete de comandos) que nos permitira ir
insertando o consultando los documentos de nuestra base de datos. En otro
articulo posterior, veremos como crear un interface grafico via web que nos
permita manipular los documentos.
Que necesitamos?
- Pues un editor de Java. Puedes usar el que mas rabia te de. Eclipse,
Netbeans u otro. Yo esta vez he usado Netbeans, para ir variando.
- Una base de datos. El ejemplo esta preparado para MySQL pero funcionara
con ligeros cambios en Oracle u otra base de datos relacional. A su vez, no te
olvides de incluir el driver JDBC de conexion a la base de datos en el
Classpath.
- y por ultimo y lo mas importante, para trabajar con JPA necesitamos una
implementacion de JPA. Existen muchos fabricantes que han hecho la suya
(verimplementaciones). En el ejemplo yo he empleado EclipseLink, asi que
basicamente, descargate esta implementacion, descomprimela y copia los
siguientes .jar en el classpath de tu proyecto:
- eclipselink.jar
- javax.persistence_1.0.0.jar
En Netbeans podemos por ejemplo crear una Libreria con esos jar, que luego
incluiremos en el proyecto, en Eclipse, pues bastaria con aadirlos al classpath.
Ya tenemos todo lo que necesitamos para trabajar, pero no esta de mas que te
bajes la siguiente tarjeta de referencia de JPA.
Y ya puestos, la siguiente, que nunca esta de mas.
JPA trabaja fuertemente con anotaciones. Para mapear un bean (una clase
java) con una tabla de la base de datos, tendriamos que escribir lo que se
llama un Entity.
Esto es tan sencillo como escribir nuestro Bean, con sus atributos y metodos
get y set. Y despues aadirle la anotacion @Entity a la par que
seleccionamos uno de sus atributos como clave primaria con @Id. Por
ejemplo, el siguiente trozo de codigo podria ser un Entity, que nos permitiria
luego almacenar, recuperar, o actualizar campos sobre una tabla usuario:
@Entity
public class Usuario
{
@Id
private String id;
private String name;
private String email;
}
Con solo esto ya tenemos creada una entidad llamada Usuario y podriamos
insertar, actualizar o eliminar entradas en una tabla llamada Usuario aunque
esta aun no existe, siquiera. A que mola!!
Un fichero muy importante que tenemos que crear a parte de las clases
Entity es el fichero persistence.xml, en este fichero vamos a indicar
precisamente que clases son Entity, sobre que base de datos vamos a atacar, y
cual es la politica de creacion de esta base de datos.
Este fichero persistence.xml debe colgar de un directorio META-INF que
este accesible en el CLASSPATH. Esto es, si tu codigo por ejemplo lo estas
dejando en la carpeta src, tendras que crear una carpeta src/META-INF y
ahi dentro crear el fichero persistence.xml.
El contenido de este fichero es similar al que puedes ver en la siguiente
imagen:
- Entre y vamos aadiendo todas las clases Entity que queremos manipular.
Esto tambien es muy importante, porque si creas un Entity pero no lo aades a
esta seccion del XML, para JPA no existe.
- Existe una ultima propiedad que conviene tener activa en los primeros
momentos, cuando estamos desarrollando:
Tenemos los Entity ya creados. Como puedo por ejemplo, insertar uno de ellos
en la base de datos.
Pues con un trozo de codigo similar al siguiente:
Como ves, el nombre que uso es DOCSPU, esto es porque asi lo tenemos
definido en el fichero persistence.xml, asi sabe como recuperar las clases y
propiedades que corresponden a esta unidad de persistencia. Si tu cambiaste
el nombre en el XML, aqui deberias poner el que hayas usado.
em.getTransaction().begin();
Usuario u = new Usuario();
u.setId(100);
u.setName("jose");
u.setEmail("[email protected]");
em.persist(u);
em.flush();
em.getTransaction().commit();
Por ejemplo para obtener Todos los proyectos de una tabla Proyectos:
Query q = em.createNativeQuery("MdcoreUser.findByID");
q.setParameteR("id","100");
MdcoreUser u = q.getSingleResult();
Este ha sido un tutorial muy basico, unicamente para que conozcais esta API y
tal vez os sirva de ayuda para empezar a mapear vuestros Entity. no creo que
siga con los tutoriales, pero con JPA se pueden hacer cosas mas complejas y
establecer asociaciones 1 a 1 y 1 a M entre las tablas. Esperemos queHermoso
dia se anime y continue con algun tutorial mas avanzado. (Gracias Lechuck por
ensearme este API).
Como prometi, aqui los fuentes (estan como .pdf realmente son .tar, renombra
de .pdf a .tar y descomprimelos, los subo asi, pq wordpress solo dejar subir
pdfs e imagenes).
http://ubuntulife.wordpress.com/?s=jpql