Inicio > JSP, Java, Linux, NetBeans, PostgreSQL, Programacion, Tutoriales, pgadmin3 > Tutorial: EJB, Persistencia y PostgreSQL en NetBeans 6.5

Tutorial: EJB, Persistencia y PostgreSQL en NetBeans 6.5

Hola a todos de nuevo por aquí retomando la creación de pequeños tutoriales en base a las prácticas desarrollando en mi diario aprendizaje. Esta vez veremos una forma rápida de como crear y usar un EJB utilizando persitencia de datos con TopLink y nuestro querido gestor de base de datos, PostgreSQL. No hablare sobre la parte teórica, porque como dije anteriormente eso lo podemos encontrar en cualquier página de internet que trate el tema. Bueno entonces manos a la obra…

Para empezar lo primero que debemos tener es una conexión activa a nuestra base de datos creado desde Netbeans; para este caso trabajare con una base de datos bd_tutorial que tengo de prueba, la cual tiene 2 tablas (Productos y DetalleProductos) y la que muestro a continuación.

tablasUna vez validado esto, ahora crearemos nuestro modulo EJB; para esto lo hacemos desde nuestro NetBeans, click en nuevo y luego seleccionamos Java EE y dentro de esta opción escogemos “EJB Module”, ponemos el nombre, del módulo en este caso EJBDemo, seleccionamos como servidor a GlassFish y finalizamos.

crearejb

Ya tenemos nuestro módulo EJB listo para crearle toda la lógica necesaria para obtener la información de las tablas de nuestra base de datos.

Ahora lo que haremos sera crear las clases entidad que representaran a nuestras tablas de la base de datos. Para esto hacemos click derecho en el módulo creado y nos dirigimos a la opción “Other” y luego en la ventana de opciones, seleccionamos “Persitence” y una vez alli seleccionamos “Entity Classes From DataBase”

entitdad

Le damos click en siguiente y nos aparecera una ventana en donde podemos ver la opción “Data Source”, desplegamos y seleccionamos “New Data source” y luego alli se nos mostrara una pequeña ventana en donde ingresaremos el nombre que reprentara a nuestro “Data Source”, que en este caso le pondremos jdbc/ejb y el “Database Connection” que es en donde escogeremos la conexión a la base de datos que habiamos agregado al inicio.

conexion

Una vez realizado este proceso, automaticamente se nos mostrara en el panel izquierdo todas las tablas creadas en esta base de datos. Ahora seleccionaremos la(s) tabla(s) con la que trabajaremos; para este caso seleccionaremos solo la tabla “Productos”, y ésta como se muestra en la imagen pasaria al panel derecho.

entidadproducto

Le damos click en siguiente y a continuación se nos muestra una ventana en donde tenemos el nombre de la tabla (lado izquierdo) y el nombre de la clase que representa a esta tabla (lado derecho), el nombre del proyecto, ingresaremos el nombre del paquete en donde se guardara la clase al cual llamaremos org.ejb.entidad.

entidadproducto_1

fijense que en la parte de abajo tenemos un boton que dice “Create Persistence Unit” le damos click alli y se nos mostrara una ventana con lo siguiente

unit

Alli podemos ver el nombre de la unidad de persistencia, el framework que proporcionara la persitencia y el Data Source que habiamos creado en un paso anterior; y luego click en crear.

Una vez hecho esto le damos click en siguiente a la ventana activa y alli vemos el tipo de mapeo de los datos, que para este caso lo dejamos por defecto y luego finalizar. Luego de esto tendremos la siguiene estructura

ejbcreadoVemos el “persistence.xml” que es en donde tenemos referencia a la base de datos mediante el DataSource, el nombre del proveedor para la persistencia (TopLink) y el nombre de unidad de persistencia, observamos las tablas de la base de datos y la clase “Productos.java”.

Ahora lo que haremos sera crear las clases que implementaran los métodos para toda la lógica, estas clases serán del tipo SessionBean, entonces lo que haremos es darle click derecho al proyecto, New y nos ubicamos en “persistence” y luego seleccionamos “Session Beans For Entity Classes”, que como nos podemos dar cuenta, creara las clases en base a la clase que representa la entidad, que en este caso es “Productos.java”, le damos click en siguiente y vemos la clase  Producto en el panel izquierdo, lo seleccionamos y damos click en Add para pasarlo al panel derecho. Luego click en siguiente y nos aparecera una ventana con los datos recogidos anteriormente, si gustan el nombre del paquete lo pueden cambiar para de esta forma tener estas clases separadas de las entidades, para este caso le puse  org.ejb.beans y luego seleccionamos Remote para el tipo de interface y finalizar.

sessionbean2

Ahora tendremos la siguiente estructura, ya con las clases del tipo SessionBean creadas y los métodos implelementados.

estructura1

Una vez hecho todo esto, solo nos quedaria deployarlo, para esto click derecho en el proyecto y seleccionamos deploy, si todo salio bien ya tendremos desplegado nuestro EJB en nuestro servidor Glassfish como podemos ver en la imagen.

glassfish

Bueno, con esto ya tenemos desplegado nuestro EJB pero ahora necesitamos utilizarlo en algún sitio. Para esto crearemos un proyecto web (imagino que ya saben como xD) al que llamaremos “AppWeb_EJB” y luego dentro del  proyecto crearemos un servlet al que llamaremos “appservlet_ejb” el cual es el que se encargaria de invocar a nuestro EJB.

Para esto dentro del método processRequest del servlet hacemos click derecho y seleccionamos la opción “Insert Code” y nos aparecera un menú emergente en el que escogemos la opción “Call Enterprise Bean..” y luego alli escogemos nuestro bean que en este caso es ProductosFacade como indica la figura

call1

Le damos click en OK y veremos que se agregó la referencia del EJB a nuestro proyecto en la parte de las librerias asi como en nuestro servlet como se puede observar en la figura

referenciaEntoces solo nos quedaria utilizar los metodos proporcionado por este EJB, para este caso utilizaremos el método “findAll” que es el que se encargaría de mostrarme toda la lista de productos, el cual mostramos en el siguiente código

servlet

Y luego desde nuestra página index,jsp solo crearemos la referencia a este servlet de la siguiente manera

index

Y listo, ejecutamos el proyecto web y estaremos mostrando los productos existentes.

Bueno, espero se haya entendido, trate de hacerlo lo mas “explicable” posible; como entenderan a veces es algo dificil poder plasmar en palabras este tipo de procesos, pero se hace lo que se puede.

Descarga el ejemplo: EJB

  1. Jorge Muñoz
    Mayo 11, 2009 a las 8:32 am | #1

    Hola Nachxs

    Muchas gracias por el tutorial. Empiezo a trabajar con aplicaciones web y me ha sacado de bastantes dudas.
    Echare un vistazo al blog a ver si encuentro mas cosas que me ayuden.

    Muchas gracias.

  2. argos
    Mayo 12, 2009 a las 9:49 am | #2

    Muchas gracias, estoy iniciando a trabajar web todo los recursos que se obtengan seran de gran ayuda.

  3. Jorge Muñoz
    Mayo 13, 2009 a las 3:26 am | #3

    Hola de nuevo.

    ¿Algún ejemplo pero con visual JSF?

    Muchas gracias.

    • nachxs
      Mayo 14, 2009 a las 9:58 pm | #4

      Hola Jorge, bueno me dare un tiempito para realizar un pequeño manual con respecto a Visual JSF.

      Saludos.

  4. KARu
    Mayo 15, 2009 a las 3:18 pm | #5

    Hola!!!

    El tutorial es muy bueno pero no me saca de la duda de para que sirve la unidad de persistencia, lo que pasa es que estoy haciendo un proyecto pero quiero saber en que me sirve la unidad de persistencia sino puedo conectar la base de datos, agradeceria tu ayuda y me pudieras escribir a mi correo

    saludos

  5. Junio 3, 2009 a las 5:33 pm | #6

    excelente explicacion, como agregar datos a la tabla??

  6. Junio 3, 2009 a las 5:33 pm | #7

    excelente explicacion, como agregar datos a la tabla?

  7. marti fornes
    Junio 17, 2009 a las 10:24 am | #8

    Hola! Los EJB que son 2.0 o 3.0? Es posible utilizar EJB 2.0?

  8. mario
    Septiembre 28, 2009 a las 10:03 am | #9

    MUCHISIMAS GRACIAS! sirve de mucho como para comenzar a trabajar!

  9. mario
    Octubre 15, 2009 a las 9:57 am | #10

    hola sos un capo al poner estos tutos…son demasiado utiles y lo mejor es justamente que no hay teoria solo practica.
    Este es un tema espinoso para mi ya q no se por donde comenzar con la Persistencia en Java, si tenes algun tuto recomendado para sacarmme esa duda bienvenido sea…y gracias de antemano

  10. luciano
    Octubre 15, 2009 a las 7:10 pm | #11

    hola muchas gracias y si he creado una datasource y ahora no lo uso poruqe quedo mal creado y deseo eliminarlo como lo hago????

    ya que necesito usar ese mismo nombre que le puse al datasource que cree de manera erronea

    es decir donde uno le pone el nombre al datasource y le da la conexion a la bd

    he creado un datasource malo y deseo eliminarlo como lo hago??

    gracias

  11. Fabricio
    Octubre 23, 2009 a las 10:44 am | #12

    En la linea
    Productos it=(Productos) productos.get(i);
    Me da error que no se encuentra la clase Productos

    • nachxs
      Octubre 24, 2009 a las 10:41 am | #13

      Bueno, creo que el mensaje de error es claro. definiste esa clase??

      Saludos.

  12. Julia
    Octubre 26, 2009 a las 9:38 am | #14

    hola, buen tutorial, pero podrias explicar como insertar datos en el detalle de productos, ya que se crean 2 clases entidad puesto que hay 2 llaves primarias.

    • nachxs
      Octubre 30, 2009 a las 4:19 pm | #15

      Julia, perdona la tardanza para responder, bueno con respecto a tu inquietud dejarme crear un pequeño tutorial con respecto a lo que me dices y lo estaré publicando.
      Gracias por leer el blog.

      Saludos.

  13. andres
    Noviembre 2, 2009 a las 1:37 am | #16

    hola.Primero quiero agradecerte por este tutorial, ya que me parecio muy bueno y practico, y segundo que todo queria saber que debo hacer si en vez de utilizar un proyecto web, deseo crear una aplicacion de escritorio.
    De antemano muchas gracias..

  1. Mayo 3, 2009 a las 1:59 pm | #1