Ejemplo de JPA , Introducción (I)

JPA o Java Persistence API es el standard de Java encargado de automatizar dentro de lo posible la persistencia de nuestros objetos en base de datos .Sin embargo  incluso a nivel básico genera dudas  a los desarrolladores . Así pues vamos a dedicar algunas entradas del blog a hablar de los conceptos mas importantes.Para ello nos apoyaremos en el siguiente diagrama UML.

Persistence.xml

El primer concepto del que vamos a hablar es del fichero persistence.xml que se encuentra ubicado en la carpeta META-INF . Este fichero se encarga de conectarnos a la base de datos y define el conjunto de entidades que vamos a gestionar.

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
 version="2.0">
 <persistence-unit name="UnidadPersonas">
 <class>es.curso.bo.Persona</class>
 <properties>
 <property name= "hibernate.show_sql" value="true" />
 <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
 <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
 <property name="javax.persistence.jdbc.user" value="root" />
 <property name="javax.persistence.jdbc.password" value="jboss" />
 <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/jpa" />

</properties>

</persistence-unit>
</persistence>

En nuestro caso unicamente tenemos una entidad “Persona” y luego la parte que se encarga de definir el acceso a la base de datos generando un pool de conexiones etc.


De esta forma tendremos a nuestra disposición un EntityManagerFactory con el que empezar a gestionar las entidades que se encuentran definidas a nivel del fichero persistence.xml. Ahora bien muchas aplicaciones JEE se conectan a varias bases de datos y generan distintos EntityManagerFactorys. 

EntityManagerFactory

En un primer lugar un EntityManagerFactory es único y es con el que nosotros gestionamos todas las entidades .Ahora bien si tenemos varias conexiones a base de datos deberemos definir un nuevo concepto que nos permite clarificar que tenemos dos EntityManagerFactories distintos. Este concepto es el que se conoce como PersistenceUnit. Cada PersistenceUnit tiene asociado un EntityManagerFactory diferente que gestiona un conjunto de entidades distinto.

De esta forma queda mas claras las diferencias entre persistence.xml, EntityManagerFactory y PersistenceUnit.

EntityManager

Una vez disponemos de un EntityManagerFactory este será capaz de construir un objeto de tipo EntityManager que como su nombre indica gestiona un conjunto de entitades o objetos.

En principio estas entidades son objetos POJO normales con los cuales estamos trabajando en nuestro programa Java .El EntityManager será el encargado de salvarlos a la base de datos , eliminarlos de la base de datos etc . Para ello define otro concepto adicional “PersistenceContext” . Este concepto hace referencia a los objetos que han sido manipulados por el EntityManager y se encuentran controlados por él.

PersistenceContext

Para conseguir que alguno de nuestros objetos pase a ubicarse dentro del PersistenceContext bastará con invocar a alguno de los métodos típicos del EntityManager

.

Una vez un objeto se encuentra dentro del PersistenceContext el EntityManager será capaz de controlar todos los cambios que se han realizado en él y ejecutar las consultas adecuadas contra la base de datos. A continuación se muestra un ejemplo de JPA.


package com.arquitecturajava;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import es.curso.bo.Persona;

public class Principal01Add {

public static void main(String[] args) {

 Persona yo = new Persona("pedro",25);
 EntityManagerFactory emf =
 Persistence.createEntityManagerFactory("UnidadPersonas");
 EntityManager em = emf.createEntityManager();
 try {
 em.getTransaction().begin();
 em.persist(yo);
 em.getTransaction().commit();
 } catch (Exception e) {

 e.printStackTrace();
 }finally {
 em.close();

 }
 }
}

En este ejemplo hemos usado el método persist() el EntityManager para almacenar la información en base de datos.

It's only fair to share...Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

About Cecilio Álvarez Caules

Cecilio Álvarez Caules Sun Certified Enterprise Architech (J2EE/JEE).

68 Responses to Ejemplo de JPA , Introducción (I)

  1. Antonio 13 Junio, 2017 at 18:58 #

    Hola, a pesar de que este post es muy antiguo, me está sirviendo para comprender bastante mejor el funcionamiento y el concepto de los EntityManager/EntityManagerFactory/PersistenceContext….

    Pero me gustaría preguntarte una duda.
    Cuando un objeto ha sido manipulado por el EntityManager sea: em.persist(user), he observado que ya tenemos la id del usuario en este caso al realizar el persist, aún así hasta que no se realiza el commit no se verá reflejado en la base de datos.

    ¿El PersistenceContext se encarga de gestionar las ids que serán asignadas a la hora de guardar esos datos en la BD?

    Muchas gracias por compartir tus conocimientos. Un saludo.

    • Cecilio Álvarez Caules 15 Junio, 2017 at 10:52 #

      si hasta que no hagas commit , no se procesa nada contra la base de datos 🙂

  2. LAURA 27 Mayo, 2016 at 17:48 #

    Hola , le escribo ya que estoy aprendiendo jpa y estoy mirando que utiliza EntityManagerFactory para crear entity manager.Mi pregunta es que tipo de patron factoria utiliza.La abstracta ,la simple o method factory.

    • Cecilio Álvarez Caules 29 Mayo, 2016 at 11:20 #

      Calculo que use la Factoria , el que usa Abstract Factory es el Entity Manager

      • Miquel 25 Octubre, 2016 at 12:02 #

        Hola, si tenemos un proyecto con la definición (persistence-unit) de nuestras conexiones de BBDD en el fichero “persistence.xml”. Si ésta misma definición de BBDD está configurada en el Servidor WebLogic donde corre la aplicación. ¿ Que debemos hacer en nuestro proyecto para no tener que definir todas las propiedades de cada conexión (url, user, password, etc) ? Osea queremos que el proyecto utilice las BBDD JDBC definidas en el Servidor WebLogic. Espero haberme explicado correctamente. Gracias.

        • Cecilio Álvarez Caules 25 Octubre, 2016 at 13:21 #

          Deberias usar una referencia JNDi al datasource que provee WebLogic.

          • Miquel 25 Octubre, 2016 at 16:49 #

            He estado buscando algun ejemplo de fichero “persistence.xml” que esté configurado como dices, utilizando la referencia JNDI pero no encuentro nada clarificador. Si me pusieras un enlace a algún ejemplo seria de gran ayuda. Gracias.

          • Cecilio Álvarez Caules 26 Octubre, 2016 at 7:39 #

            https://gist.github.com/aziz781/1336488

          • Miquel 27 Octubre, 2016 at 12:53 #

            Hola Cecilio,
            He probado de configurar el persistence-unit tal y como creo que hay que hacerlo, pero sigo necesitando porner las properties (jdbc.driver, jdbc.url, jdbc.use y jdbc.password) en el fichero “persistence.xml”.

            Otro problema que tengo en mi aplicación es la siguiente, son 4 WS que estan en un mismo paquete WAR que corren en un Weblogic 10.3.6.0. Cada uno de los WS utiliza una BBDD diferente y de vez en cuando alguno de ellos deja de funcionar y parece que lo que falla es la conexión de BBDD, pero accedo a la Consola de Weblogic y todo está correctamente. La única forma que conseguimos que vuelva a funcionar es parando y arrancando el nodo en el que están corriendo.

            Te muestro uno de los mensajes por si sirve de algo:

            Exception [EclipseLink-4002] (Eclipse Persistence Services – 2.3.1.v20111018-r10243): org.eclipse.persistence.exceptions.DatabaseException
            Internal Exception: java.sql.SQLRecoverableException: Closed Connection
            Error Code: 17008

            Muchas gracias

          • Cecilio Álvarez Caules 27 Octubre, 2016 at 13:25 #

            Quizas estes gestionando en algún sitio incorrectamente las conexiones sin hacer los closes y entonces te acabas quedando sin conexiones en el pool

  3. Marcelo 27 Julio, 2015 at 17:24 #

    Hola, estoy haciendo el tutorial del libro (excelente trabajo) con un ejemplo mio, pero en vez de tomarme las anotaciones @entities, me toma los hbm. que estare haciendo mal?

    • Cecilio Álvarez Caules 27 Julio, 2015 at 20:01 #

      No te se decir así con algo tan general, revisa que has desactivado los mapeos de los hbm en el fichero de configuracion

      • Marcelo 28 Julio, 2015 at 12:13 #

        Este es el archivo persitence.xml (el archivo de hibernate.cfg.xml lo elimine)

        Mi Unidad de persistencia
        org.hibernate.ejb.HibernatePersistence
        ar.com.sigeus.entities.Usuarios
        ar.com.sigeus.entities.Cargos

  4. Lilia 23 Julio, 2015 at 21:12 #

    Saludos, odras poner un ejemplo utilizando base de datos con mysql

    • Cecilio Álvarez Caules 23 Julio, 2015 at 22:26 #

      Esta hecho con mysql 🙂 .. explicate un poco mejor 🙂

  5. Alexandra 11 Julio, 2015 at 19:11 #

    Hola por favor puedes explicar sobre el uso de procedimientos almacenados complejos en postgres utilizando jpa. Agradecere infinitamente tu ayuda 😉

    • Cecilio Álvarez Caules 12 Julio, 2015 at 10:12 #

      ojala lo supiera todo alejandra me apunto la idea de los procedimientos almacenados con JPA 🙂

  6. alex 17 Marzo, 2015 at 2:36 #

    Saludos, puedes por favor indicar un ejemplo de como quedaría el archivo persistence.xml configurado con los dos datasources

  7. Joaquín Bressan 12 Enero, 2015 at 20:41 #

    Buen aporte amigo. Muchas gracias por compartir.

    • Cecilio Álvarez Caules 13 Enero, 2015 at 20:13 #

      gracias 🙂

  8. Patricio 12 Noviembre, 2014 at 2:33 #

    Estimado he estado leyendo sobre las transacciones en JPA, y veo en tu ejemplo que usas explicitamente el begin , commit, rollback, pero tengo entendido que hay la opcion que las transacciones sean gestionadas por el contenedor automaticamente. Por favor puedes profundizar en el tema. gracias de antemano.

  9. Jessica 19 Agosto, 2014 at 15:51 #

    Cecilio, buenas, una consulta

    Persona yo = new Persona(“pedro”,25);
    EntityManagerFactory emf =
    Persistence.createEntityManagerFactory(“UnidadPersonas”);
    EntityManager em = emf.createEntityManager();
    try {
    em.getTransaction().begin();
    em.persist(yo);
    em.getTransaction().commit();

    En mi caso tengo mas de una entidad mi consutlta es si por cada entidad que quiero persistir debo hacer el createEntityManagerFactory ?? que es lo que recibe como parametro ? en donde aqui entra en PersistenceContext?

    Muchas Gracias.

    • Jessica 19 Agosto, 2014 at 15:53 #

      Ah, tambien si eso de getTransaction es requerido antes y dsp de persistir_?

      • Cecilio Álvarez Caules 19 Agosto, 2014 at 18:33 #

        para iniciar y cerrar la transaccion

    • Cecilio Álvarez Caules 19 Agosto, 2014 at 20:23 #

      no hace falta . El createEntityManagerFactory solo se realiza una vez 😉

      • Andres 20 Octubre, 2014 at 1:01 #

        Hola, viendo tu comentario veo la nececiad de citar otro comentario:

        “Tengo una duda en cada metodo por ejemplo update, select , save, etc. debo crear los objetos:
        EntityManagerFactory emf = Persistence.createEntityManagerFactory(“UnidadPersonas”);
        EntityManager em = emf.createEntityManager();
        o puedo crear un singleton que me devuelva el emf o el em ? cual debo crear, actualmente estoy devolviendo el em, pero no se si sea lo correcto?”

        en el comentario citado dices que no se debe tratar como un singleton, pero si el createEntityManager solo se realiza una vez, no seria mejor tratarlo como tal?, o en el caso de tener varias Entity Class de una base de datos, es necesario invocar de nuevo el createEntityManager o este sirve uno creado con anterioridad?

        Aclaro, estoy refiriendome que cuando hay instancia de una unica base de datos.

        y una duda extra, el em.getTransaction() retorna un UserTransaction? no es muy claro en la documentacion de java.

        Me gusto tu post, es bueno tener ejemplos claros y sencillos ayudan a comprender mejor.

        • Cecilio Álvarez Caules 20 Octubre, 2014 at 20:40 #

          Puedes crear un singleton que devuelve emf pero no em 🙂 . El em no es un singleton

  10. Ismael 9 Julio, 2014 at 19:11 #

    Como leo en anteriores comentarios tengo dudas sobre la creacion de la base de datos en cuanto a que es lo mejor diseñar y luego implementar directamente en un lenguaje tipo mysql o en JPA desde Java
    en caso de lo hagas en mysql , hay que exportar esas tablas y crear sus clases entity , y por parte d elas validaciones donde es donde se aplicarian

    • Cecilio Álvarez Caules 9 Julio, 2014 at 19:22 #

      A mi me gusta primero crear el modelo conceptual… que suele ser muy parecido al entidad relación y luego crear las tablas. Cuando luego generes el modelo de JPA puede que se te ocurra alguna idea con la que enriquecer la parte de base de datos. En cuanto a las validaciones recuerda que suelen estar divididas . Unas pertenecen de forma muy clara a la base de datos tipo claves primarias,foraneas, registros unicos etc pero otra parte de las reglas de negocio estan mas ligadas a los entities por ejemplo una Persona no puede tener mas de 120 años ..o cosas similares

  11. Oscar Montoya 8 Junio, 2014 at 1:57 #

    Hola, muchas gracias de ante mano por esta explicacion.
    Tengo una duda en cada metodo por ejemplo update, select , save, etc. debo crear los objetos:
    EntityManagerFactory emf = Persistence.createEntityManagerFactory(“UnidadPersonas”);
    EntityManager em = emf.createEntityManager();
    o puedo crear un singleton que me devuelva el emf o el em ? cual debo crear, actualmente estoy devolviendo el em, pero no se si sea lo correcto?

    muchas gracias por la ayuda que me puedas dar!!

    • Cecilio Álvarez Caules 9 Junio, 2014 at 9:55 #

      Ninguno de los dos es un singleton y no deben tratarse como tal 🙁 .Quizás el EntityManagerFactory se acerca mas al concepto de Singleton ya que tenemos uno por unidad de persistencia. Sin embargo el EntityManager es muy claro que no es un singleton ya que existe uno por cada pequeño conjunto de operaciones.

  12. Lsdany 21 Mayo, 2014 at 22:39 #

    Gracias, me fue de mucha ayuda.

    • Cecilio Álvarez Caules 22 Mayo, 2014 at 9:03 #

      de nada me alegro que te fuera util 🙂

  13. Carlos Oliva 28 Abril, 2014 at 1:00 #

    Hola buenas tardes (por lo menos en Mx), primero que nada felicitaciones por el sitio recien me ha traido google por aquí y ya esta en mis marcadores. Yo desde hace tiempo trato de usar JPA por sus ventajas, pero me surge una duda, es posible cambiar el valor de las propiedades del archivo persistence.xml, esto es los datos de la base de datos? de momento tengo que cambiarlos y luego generar el .jar para que funcione con cada cliente, pero esto me parece poco practico, habitualmente trabajo con Delphi y aquí si puedo indicarle los datos de la base desde un archivo .ini

    Agradesco de antemano tu tiempo.

    Saludos!

    • Cecilio Álvarez Caules 28 Abril, 2014 at 21:30 #

      Voy a intentar abordar este tema en un articulo del blog me parece interesante 🙂

  14. Hey 26 Abril, 2014 at 9:28 #

    Una pregunta tengo pensado migrar a web ya estos meses, cuando acabe de terminar algo con JavaFX, pero mi pregunta y mi inquietud se basa en, el html, css y js, en aplicaciones de escritorio como ya te dan todo para que solo empieces a arrastrar y soltar se hace muy fácil de dominar, pero en web lo he intentado y termina aburriendome tener que estar lidiando con tl html, css y js, existe bootstrap, pero para dominarlo tienes que tener las bases de las anteriores algo solidas y he visto también a jsf y es algo parecido pero por lo visto cuando se presenten problemas graves tendré que recurrir a las 3 primeras mencionadas ya que jsf es una abstracción de esos. Bueno espero darme a entender, tienes algún recurso de como integrar bootstrap con java web?

    • Cecilio Álvarez Caules 26 Abril, 2014 at 11:08 #

      No tengo ningun recurso de bootstrap. Pero evidentemente JSF no sería el camino .Te aconsejo Spring MVC que de eso si tengo unos articulos de introducción en el blog.

      • Hey 27 Abril, 2014 at 17:41 #

        Gracias!.

  15. Hey 26 Abril, 2014 at 9:23 #

    Que buen sitio, resumes rapido sin tanto alardeo y ejemplos claros, todo al grano. Veré en que más eres bueno felicitaciones por el sitio.

    • Cecilio Álvarez Caules 26 Abril, 2014 at 11:06 #

      gracias 🙂

  16. nelson 3 Febrero, 2014 at 1:56 #

    saludos… Como implementar como implementar la herencia de una clase abstracta en mi base de datos. Por ejemplo tengo una clase EventoDeportivo que tiene dos objetos “Contendiente” pero contendiente es una clase abstracta de la que heredan los contendientes concretos “perro”, “boxeador”, “equipo” pudiendo extender facilmente el uso de los contendientes en eventos deportivos. Mi pregunta es… cual seria el modelo relacional de dicho modelo de clases.

    Yo empecé a usar jpa y anotar todas las clases con las anotaciones necesarias para mapearlas con el estándar. Pero cuando ejecuto la aplicación (java web con jsf, jpa) jpa en la base de datos sólamente crea dos tablas: “EventoDeportivo” y “Contendiente” y la doble relación, pero… además en la tabla “Contendiente” se agregan los campos raza (que pertenece al contendiente concreto perro), fechaFundacion(que pertenece al contendiente concreto equipo) y peso (que pertenece al contendiente concreto boxeador) y eso no me parece nada correcto.

    • Cecilio Álvarez Caules 3 Febrero, 2014 at 23:10 #

      Hay una anotación de JPA que te ayuda con clases abstractas @MappedSuperClass echala un vistazo 🙂

      • Nelson 17 Febrero, 2014 at 19:25 #

        Oh que interesante! no los sabía. La estaré probando… gracias.

  17. william 12 Diciembre, 2013 at 16:27 #

    Una Pregunta
    Siempre en las aplicaciones cliente/servidor y en las aplicaciones web me he preguntado si al realizar transacciones en ambos modelos / plataformas de programación es mejor
    crear una sola conexión a la base de datos (en este caso una sola unidad EntityManagerFactory un solo EntityManager) o por cada transacción a realizar crear uno porque como en alguna parte explicas el modelo “guarda varias transansaciones” y las persiste todas al final con un commit cuando afirmas:”ya que el EntityManager irá almacenando las modificaciones que nosotros realizamos sobre las entidades .Para mas adelante persistirlas contra la base de datos todas de golpe ya sea invocando flush o realizando un commit a una transacción.”
    Una idea o guía me ayudara muy bien.

    • Cecilio Álvarez Caules 12 Diciembre, 2013 at 20:41 #

      Existe un unico EntityManagerFactory por PersistenceUnit . La que hace el EntityManager no es ejecutar una transacción por cada modificación que realizamos sino que lo que hace es almacenar todas las modificaciones que vamos realizando a los objetos para que cuando realicemos un commit el se encargue de lanzar las consultas pertinentes y refrescar la base de datos con las modificaciones solicitadas para mantenerlo todo sincronizado. No se si te he aclarado algo?

  18. Pedro 11 Noviembre, 2013 at 22:19 #

    Saludos. Parece que hay mucho de JPA y JEE que tengo que descubrir. Me he fijado que los objetos quedan siempre en memoria.

    Supongamos que tengo una lista de empleados en una vista (xhtml) cuyo value es un método “obtenerEmpleados()” de un ManagedBean que a su vez ejecuta al método con el mismo nombre, de una fachada de empleados, método que recupera los empleados con una consulta jpql. Desde la base de datos, borro o actualizo un empleado. Entonces al actualizar la vista se supone que debería faltar (ya no estar) el empleado que he borrado directamente desde la base de datos; pero, no es esto lo que pasa, el empleado siempre es encontrado y agregado a la lista. Tengo que limpiar alguna especie de caché o el contexto de persistencia? Agradecería mucho su ayuda.

    • Cecilio Álvarez Caules 12 Noviembre, 2013 at 9:27 #

      en principio lo que deberias es volver a lanzar una consulta que vuelva a seleccionar la nueva lista y refresque los datos de la capa de presentacion .Date cuenta que el persistence context en principio tiene un ambito de Request

      • Pedro 12 Noviembre, 2013 at 22:52 #

        La consulta la hago nuevamente mediante la creación de un @NamedQuery, pero… cuando hago el singleResult(), el objeto es encontrado y devuelto al ManagedBean que a su vez se lo pasa a la vista.

        Lo que hice fue usar el método evict(Class cls) de la cache del @EntityManagerFactory. Estoy conciente que no debe ser la mejor solución, pero… es la única manera en la que el objeto que ya no está en la base de datos tampoco sea encontrado en la consulta jpql

  19. Nelson 4 Noviembre, 2013 at 3:42 #

    Saludos se que esta fuera de lugar, pero, quisiera saber si podría escribir sobre infecciones de dependencias.

    • Cecilio Álvarez Caules 4 Noviembre, 2013 at 19:06 #

      Es algo que tengo pendiente y lo intentare en las proximas semanas

  20. Ismael 27 Septiembre, 2013 at 8:56 #

    Hola,
    Como puedo crear las tablas de la base de datos desde java, tengo todas las clases Entity java configuradas con sus relaciones, el persistence.xml, etc.

    • Cecilio Álvarez Caules 28 Septiembre, 2013 at 10:58 #

      Existe un modelo de proyecto que se denomina JPA . Cuando construyes un proyecto de este estilo con eclipse el te aporta ese tipo de facilidades

  21. José Luis Villaverde 17 Septiembre, 2013 at 16:53 #

    Hola,
    si como indicas, en caso de existir varias conexiones a base de datos aparece el concepto de “PersistenceUnit”, en este caso A y B. Entiendo que sigue existiendo UN SOLO archivo de configuración “persistence.xml” en el cual se pueden configurar varias persistenceUnit , ¿es así?
    Gracias

    • Cecilio Álvarez Caules 18 Septiembre, 2013 at 9:00 #

      Si exactamente con un único archivo es suficiente 🙂

Trackbacks/Pingbacks

  1. JPA Proxy y su funcionamiento - Arquitectura Java - 7 Enero, 2017

    […] artículos relacionados: Introducción a JPA , JPA Embedded Object , Spring Data y […]

  2. Un ejemplo de JPA Entity Graph - Arquitectura Java - 12 Septiembre, 2016

    […] artículos relacionados : ORM.XML , Introducción a JPA , JPA […]

  3. ¿Cómo funciona JPA First Level Cache ? - Arquitectura Java - 27 Mayo, 2016

    […] artículos relacionados:  El concepto de EntityManager , JPA Introducción , Introducción a […]

  4. JPA Join Fetch y su uso. - Arquitectura Java - 24 Febrero, 2016

    […] artículos relacionados : Introducción a JPA , JPA y […]

  5. JPA NamedQueries y organización - Arquitectura Java - 7 Octubre, 2015

    […] artículos relacionados : Introducción a JPA ,JPA y MongoDB  Relaciones […]

  6. JDBC Batch y rendimiento - Arquitectura Java - 12 Agosto, 2015

    […] artículos relacionados : Introducción a JPA , EntityManager , Introducción a […]

  7. JDBC, Java try with resources - Arquitectura Java - 2 Julio, 2015

    […] artículos relacionados: Introducción a JPA ,Introducción a JTA, SQL […]

  8. Utilizando JPA NamedQueries - Arquitectura Java - 15 Enero, 2015

    […] artículos relacionados: Introducción a JPA , JPA OneToMany, Libro de […]

  9. Tomcat Java DataSource y @Resource - Arquitectura Java - 30 Diciembre, 2014

    […] artículos relacionados: Introducción a JPA , Libro JPA , JPA […]

  10. Integración de JPA MongoDB - Arquitectura Java - 21 Noviembre, 2014

    […] artículos relacionados: Introducción a JPA , JPA y relaciones ,Libro de […]

  11. Java y MongoDB - Arquitectura Java - 11 Noviembre, 2014

    […] artículos relacionados: Ejemplo JPA ,Java y JSON , […]

  12. EntityManager, EntityManagerFactory y Singletons - Arquitectura Java - 11 Junio, 2014

    […] Arquitecturajava : Ejemplo de JPA […]

  13. Flexibilidad en JPA persistence.xml y orm.xml - Arquitectura Java - 29 Abril, 2014

    […] podemos ver el fichero incluye los mismos conceptos elementales de JPA pero en vez de a traves de anotaciones  a traves del uso de etiquetas xml . Esta solución aporta un enfoque “diferente” ya […]

Deja un comentario