Inicio > Java, JSP, Linux, NetBeans, pgadmin3, PostgreSQL, Programacion, Tutoriales > 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..

  14. Francisco
    noviembre 11, 2009 a las 5:42 am | #17

    Hola,soy programador en .net y estoy empezando a entrar el extenso mundo de java. Despues de muchas horas buscando por internet todo tipo de información encontré este blog que me sacado de muchísimas dudas que tenía, te felicito por tu forma de explicar, clara y sencilla, para novatos como nosotros es fundamental, asi que gracias por tu tiempo y dedicatoria y te animo a que continues porque vale la pena lo que haces.
    Saludos cordiales.

    • nachxs
      noviembre 12, 2009 a las 10:09 am | #18

      Hola Francisco muchas gracias por tu comentario, de todas maneras seguiremos aportando con lo poco que conocemos.

      Saludos.

  15. Roberto
    diciembre 10, 2009 a las 2:40 pm | #19

    Hola a todos, nopude bajar el ejempli zip a ver si lo vuelven subir gracias es muy buen tutorial

    • nachxs
      diciembre 10, 2009 a las 8:08 pm | #20

      Hola Roberto, bueno yo no he tenido problemas para descargarlo, en todo caso te lo enviare a tu correo.

      Saludos y gracias por leer el blog.

  16. Liz
    enero 10, 2010 a las 1:37 am | #21

    Muy buen tutorial!! excelente!!

  17. Juan Pablo
    febrero 7, 2010 a las 2:04 pm | #22

    My buen tutorial. Es simple y sensillo, pero tiene todo lo necesario para realizarlo paso a paso. Además, no es un ejemplo como el que se encuentra en cualquier web, este funciona.
    Saludos y felicitaciones.

  18. nachxs
    febrero 7, 2010 a las 11:24 pm | #23

    Hola Juan Pablo, bueno te agradezco por el comentario y sobre todo por visitar el blog.

    Saludos.

  19. matias
    febrero 12, 2010 a las 4:45 pm | #24

    un capo hasta q lo hise andar intente en miles de paginas pero no podia hacerlo andar de otras formas , y esta me parece la mejor gracias

  20. Felipe
    marzo 8, 2010 a las 10:45 pm | #25

    Hola gracias por el tutorial, pero tengo problemas con el deploy, sale un error
    The module has not been deployed.

  21. marzo 10, 2010 a las 9:15 am | #26

    HOLA. MUCHAS GRACIAS AL AUTOR DE ESTE TUTORIAL PUES ESTA MUY BIEN EXPLICADO Y YA PUDE CONECTAR LAS BASES DE DATOS. DESEO QUE DIOS TE BENDIGA Y TE DE MAS INTELIGENCIA Y SABIDURIA YA QUE ERES UN GENIO.
    CHAO.
    DESDE BOYACA COLOMBIA.

    • nachxs
      marzo 12, 2010 a las 10:56 pm | #27

      Hola Maria, gracias a ti por dejar el comentario.

      Saludos.

  22. marzo 10, 2010 a las 9:45 am | #28

    HOLA OTRA VEZ, QUIERO SABER COMO SE LE AGREGAN, BORRAN Y MODIFICAN DATOS A LA BASE DE DATOS, AHI MISMO. SIN TENER QUE ABRIR OTRO PROYECTO U CONECTAR CON OTRO PROGRAMA.
    GRACIAS, Y ESPERO TU RESPUESTA EN MI CORREO.

  23. Erik Muñoz
    marzo 11, 2010 a las 8:47 pm | #29

    Me sirvió mucho gracias.

  24. Marys
    marzo 19, 2010 a las 11:03 am | #30

    Hola Nachxs veo que eres muy bueno en netbeans oye me podrias ayudar con un ejemplo en netbeans para la captura de calificaciones, mmm es que aun no se como hacerle asi que si me puedes ayudar te lo agradeceria infinitamente

  25. nachxs
    marzo 22, 2010 a las 12:45 pm | #31

    Hola Marys, gracias por el comentario.
    Claro solo envia la consulta y te podemos ayudar.

    Saludos.

  26. leandro
    abril 2, 2010 a las 11:54 am | #32

    que tal nachxs tengo un serio problema que logro entender. realice el tutorial con la diferencia que use mi conexion a una bd en oracle 10g la cual funciona corectamente. como tiene una totalidad de casi 500 mil registros use la funcion count para realizar una prueba rapida. Pero me arroja un error en la consola de error while binding jndi name org.ejb.beans.Deta200701FacadeRemote…(y mas..)
    … mas abajo
    NameAlreadyBoundException: Use rebind to override

    Lo mas raro de todo esto es que la primera vez compilo apage mi ordenador quise probarlo y este error salio y no ha dejado de salir
    Ojala puedes leer mi peticion y mejor aun me puedas ayudar gracias

  27. leandro
    abril 2, 2010 a las 12:01 pm | #33

    solo para aclarar algo
    1 No logro entender el error nose por que ahora no me arroja el resultado de la primera vez (cargaba el navegador y arrojaba el count d la tabla)

    2 ahora no carga y tan solo me muestra en la consola ese error del override
    gracias

  28. Mayra
    junio 17, 2010 a las 10:07 pm | #34

    Hola como todos te voy a decir lo mismo, el tuto esta lo mas de bueno para personas que se inician, te cuento yo ya hice lo mismo que tu hiciste pero para llegar a eso me pase un monoton de tiempo y no entiendo porq no vi este tuto antes, ya que en serio se ve que sabe del asunto queria ver si puedes ayudarme un poquito con la insersion de una imagen y la recuperacion de la misma, en jsp encuentro algunos tutoriales pero hablan de tomcat y eso y la verdad no me sale, ante todo te agradezco el hecho de tan solo leer este mensaje, Te cuidas y Q.D.B.

  29. Samsagaz
    septiembre 5, 2010 a las 7:24 am | #35

    Buenas.

    estoy con netbeans 6.8, estoy intentando añadir el session bean for entity clases, para eso hago lo que pones, New>Other>Persistence —> y en esta parte me aparecen todas las opciones que te aparecen a ti, menos Session Bean For Entity Classes :shock:

    Sabes a que puede deberse?

    Muchas gracias

  30. Miguel G
    marzo 5, 2011 a las 1:02 pm | #36

    Excelente!!! mas sencilla la explicacion no se puede. Gracias. Nachxs.

  31. Sergio
    abril 7, 2011 a las 8:20 pm | #37

    Hola excelente tutorial amigo, bueno te explico que lleve a cabo los pasos que mencionas y todo salio bien, el problema que tengo es el siguiente:

    Estoy corriendo la aplicacion y trayendome los datos de la tabla Productos, hasta ahi perfecto, pero al momento de yo agregar directamente productos a esa tabla, cuando le vuelvo a dar clic al link de productos no me lista el nuevo producto que agregue, me lista los productos viejos solamente, tengo que hacer un nuevo deploy para que asi me muestre los productos. Saludos y espero me puedes ayudar.

  32. Carlos
    enero 24, 2012 a las 3:55 pm | #38

    Buenas noches

    Estoy comenzando a programar en Java .. por lo cual estoy Usando Netbeans y conectándome por JDBC a la base de datos Sybase 11 … buscando como conectarme opte por usar persistencia … por lo cual en internet hay ejemplos pero con Mysql … pero al querer hacerlo con mi base de datos Sybase … los asistentes en la creación de Entidades no me funcionan, no me parecen las tablas para seleccionar …. por lo cual me genera un gran inconveniente ya que tendria q crear mis propias entidades a mano … y son mas de 100 tablas … no se si me podiran ayudar en este tema

    Se lo agradecería mucho …

    Gracias

  33. sebas
    enero 27, 2012 a las 2:16 pm | #39

    holaaa…quisiera que me indiques como hacerlo con jboss…porfaaa :O

  1. mayo 3, 2009 a las 1:59 pm | #1
  2. enero 3, 2011 a las 9:30 am | #2

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.

Únete a otros 30 seguidores