jueves, 14 de julio de 2011

JPA - Configuración Eclipse + JBoss + EJB3 + JPA + Hibernate

Este tutorial pretende explicar paso a paso como configurar un entorno de trabajo para empezar a trabajar con JBoss, EJB3, JPA, Hibernate y Eclipse.

Al final de este tutorial, encontrara los ejemplos de las entidades, EJBs,  servlets y datasource que se vieron a lo largo de todo este capitulo, listos para descargar.. 

Requisitos previos
  • Tener instalado y levantado una base de datos Oracle 10g/11g
  • Usuario / password de base de datos  
    • hibernate_tutorial / hibernate_tutorial 
  • Comandos para crear el usuario y password en la BD, necesarios para este tutorial:
    • drop user hibernate_tutorial cascade;
    • create user hibernate_tutorial identified by hibernate_tutorial;
    • grant DBA to hibernate_tutorial;

Descargas:
  • Descargar las librerias de Hibernate (en D:\APIS)
  • Descargar las librerias de OpenEjb (en D:\APIS)

Pasos para la configuración del entorno de desarrollo en el eclipse
  • Procedemos a crear un proyecto java simple (lo llamaremos ModelTutorial). Este proyecto/modulo tendra las entidades que luego los modulos EJB y Web podrán acceder.


  • Una vez creado el proyecto java, procedemos a configurar las librerías con las anotaciones de Hibernate, JPA y el driver de oracle. Todas estas librerias seran tambien de gran utilidad en caso que querramos hacer los test de las entidades creadas.



  • Agregar los JARs de Hibernate

  • Agregar los JARs a la libreria de usuario recientemente creada
    • Agregar todos los jars de D:\APIS\Hibernate\hibernate-distribution-3.3.1.GA\lib\required (menos el slf4j-api-1.5.2.jar) 
    • Agregar el jar de D:\APIS\Hibernate\hibernate-distribution-3.3.1.GA\hibernate3.jar
    • Agregar el jar de D:\APIS\Hibernate\hibernate-annotations-3.4.0.GA\hibernate-annotations.jar
    • Agregar el jar de D:\APIS\Hibernate\hibernate-annotations-3.4.0.GA\lib\hibernate-commons-annotations.jar
    • Agregar el jar de D:\APIS\Hibernate\hibernate-entitymanager-3.4.0.GA\hibernate-entitymanager.jar
    • Agregar el jar de D:\APIS\log4j\apache-log4j-1.2.16\log4j-1.2.16.jar
    • Agregar el jar de  D:\APIS\openejb\openejb-3.1.4\lib\javaee-api-5.0-3.jar
    • Agregar el jar de  D:\APIS\slf4j-1.5.8\slf4j-api-1.5.8.jar
    • Agregar el jar de  D:\APIS\slf4j-1.5.8\slf4j-simple-1.5.8.jar


  • Agregar el JAR del driver de ORACLE

  • Agregar el JAR de JUnit (que viene con el eclipse)




  • Mostramos todos los JARs agregados a este proyecto/modulo

  • Ahora procedemos a crear una entidad a modo de ejemplo (se llamara Referee)

  • Creamos el persistence.xml en el modulo/proyecto de EJB (EjbTutorial) dentro de la carpeta META-INF como muestra la siguiente captura  IMPORTANTE: No colocar el persistence.xml dentro del modulo/proyecto ModelTutorial ya que cuando vamos a querer inyectar el persistenceContext (EntityManager) en el EJB nos va a tirar un error que no encuentra el mismo. En el unico lugar que debería ir es en el modulo de EJB.
  • Ahora vamos a configurar la dependencia entre el modulo EJB (EjbTutorial) con el modulo de dominio (ModelTutorial).







<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_1_0.xsd"
 version="1.0">

    <persistence-unit name="examplePersistenceUnit" transaction-type="JTA">    
      <provider>org.hibernate.ejb.HibernatePersistence</provider>    
      <jta-data-source>java:/TutorialDS</jta-data-source>


      <!-- Oracle DB -->
        <properties>
          <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.dialect"
                      value="org.hibernate.dialect.Oracle9Dialect"/>  
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>              
    </persistence-unit>
</persistence>

  • Ahora procedemos a crear el datasource (con todos los datos de conectividad a la BD). Lo llamaremos oracle-ds.xml
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
    <local-tx-datasource>
        <jndi-name>TutorialDS</jndi-name>
        <connection-url>jdbc:oracle:thin:@localhost:1521:xe</connection-url>
        <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
        <user-name>hibernate_tutorial</user-name>
        <password>hibernate_tutorial</password>
        <valid-connection-checker-class-name>
              org.jboss.resource.adapter.jdbc.vendor.
              OracleValidConnectionChecker
        </valid-connection-checker-class-name>     
    </local-tx-datasource>
</datasources>

  • Este datasource lo vamos a colocar en D:\servers\jboss-5.1.0.GA\server\default\deploy

  • Y por ultimo, vamos a colocar el JAR del driver de oracle (el mismo que habiamos agregado al modulo ModelTutorial) en el siguiente directorio del JBoss: D:\servers\jboss-5.1.0.GA\server\default\lib


Descargas de los fuentes

Para descargar los fuentes del modulo EjbTutorial, haga clic aqui
Para descargar los fuentes del modulo ModelTutorial, haga clic aqui
Para descargar los fuentes del modulo WebEjbTest, haga clic aqui
Para descargar los fuentes del datasourcehaga clic aqui

Sitios similares

http://schuchert.wikispaces.com/EJB+3+and+Java+Persistence+API



    3 comentarios:

    1. Sigue los pasos que te indica este tutorial y terminaras creando un proyecto en eclipse modularizado.

      Para lanzar el proyecto vas a tener que pararte en el server (JBOSS), agregar el EAR e iniciar el servidor.
      Aquí podrás ver esto que te digo: http://java-all-frameworks.blogspot.com.ar/2011/07/jpa-configuracion-eclipse-jpa-hibernate.html

      Saludos.-

      pd: Cualquier duda que tengas en dichos pasos no dudes en postearlo.

      ResponderEliminar
    2. ya no sirven los enlaces de descarga

      ResponderEliminar