Tutorial: Aplicación CRUD con JPA y JSF en NetBeans (1era Parte)


Hola! el día de hoy  haremos un mantenimiento CRUD de productos con JPA y JSF y como Ide usaremos Netbeans, por las características rápidas que ofrece. Bueno basicamente una aplicacion CRUD es la que te permite hacer lo siguiente: CREATE-READ-UPDATE-DELETE, que significaria un mantenimiento basico de cualquier entidad.
.



Para este tutorial usaremos lo siguiente:
  • Netbeans 8.0
  • PostGreSql (o  Mysql , o cualquier base que tengas instalada)
  • GlassFish Server ( viene por default con netbeans)
  • PrimeFaces (no necesitas instalar nada)      
Comencemos!
  • Creamos en netbeans, un proyecto tipo Java Web -> Web Application, y le ponemos de nombre "ProductoWeb"
  • En el paso 3, seleccionamos el servidor  de aplicaciones con el cual vamos a trabajar, en este caso el GlassfishServer 
  • En el paso 4 , seleccionamos los frameworks que va  usar nuestra aplicación en este caso , seleccionaremos  solamente Java Server  Faces, en la ficha "Components" seleccionamos la opcion PrimeFaces.
  • Damos clic en el boton Finalizar, y tenemos nuestro proyecto creado.
  • Como vemos en la imagen tendremos una estructura parecida a la mostrada. En la carpeta Source Packages, crearemos el paquete com.dominio, dando clic derecho en Source Packages/New Java Package 
  • Creamos la entidad Producto, dando clic derecho en el paquete com.dominio, New/ Entity Class, damos clic en Finish , y nos pedirá crear nuestra Unidad de Persistencia, que no es mas que un archivo xml que contiene la configuración de nuestra base de datos, esquema de creación de objetos y demás. El archivo lo encontraras en Configuration files/ persistence.xml. Por el momento lo nombraremos como ProductoWebPU y no le haremos ninguna configuración.
new file

  • Vamos a ver el código de nuestra entidad. Si notas en la  parte superior de la clase, estará la notación de JPA @Entity, eso nos indica que  esta clase es una entidad y por consiguiente va a ser una tabla en nuestra base de datos. Por default NetBeans inserta un atributo de Id que es un auto secuencial y se vuelve la clave primaria de nuestra tabla Producto. Lo que haremos a continuación es agregar unos pocos mas atributos a nuestra clase 

    private String descripcion;
    private String marca;
    private double precio;
    private double stock;

  • Una vez agregado nuestros atributos, damos clic derecho en uno de ellos y escogemos la opcion "Insert Code"/ Getters and Setters, seleccionamos todos nuestros atributos y damos clic en Genarate, Con esto tenemos nuestra clase entidad Producto lista y encapsulada, recordemos que en esta clase no tendremos ningún código especial ya que solo esta destinada a tener los atributos que vamos a tener en nuestra tabla. 
generate getters setter
  • Para el siguiente paso quiero que veas el tutorial de cómo crear un data source en Glassfish server de este mismo blog.
  • Una vez hecho esto vamos a modificar nuestra unidad de Persistencia, recuerda que encontraras este archivo en Configuration files / persistence.xml, lo editaremos en modo de Diseño, poniendo en el campo DataSource el nombre JNDI, con el que nombraste el JDBC en el glassfish Server. Para este punto tambien vale recalcar las opciones de "Table Generation Strategy", yo he seleccionado la opcion "Drop and Create" , para que en cada ejecucion borre los objetos de la base y los vuelva a crear, esto basicamente porque es un ejemplo de prueba, en un ambiente de produccion no seria nada recomendable. 

  • Y bueno para este tutorial no necesitaras programar casi nada, porque Netbeans lo hara por ti, vamos a crear otro paquete al que le pondremos "com.repositorios" damos clic derecho y escogemos la opcion New/Other.. Se desplegara una ventana como la siguiente:

Session Beans

  • Escogeremos la opción de Enterprise JavaBeans / Session Beans for Entity Classes, damos clic en el botón siguiente, escogemos las clases entidades en este caso solo tenemos la entidad Producto, por ultimo damos clic en Finalizar
  • Te daras cuenta que en el paquete habran aparecido dos clases Abstract Facade y Producto Facade. En la clase Abstract Facade, estaran todos los metodos propios de una aplicacion CRUD, como crear, consultar, actualizar y borrar. La clase Producto Facade, lo que hace es usar estos metodos, y si tuvieramos muchas mas entidades pues nuestra clase Abstract Facade seria una sola, y todo ese codigo seria reutilizable.

Hasta este punto dejaremos esta parte del tutorial, puedes revisar el codigo generado en las clases Abstract Facade y Producto Facade, tambien debo mencionarte que  podrias simplemente usar la opcion que ofrece NetBeans de generar paginas JSF desde entity classes que fue uno de los primeros puntos que vimos, y todo el codigo lo generaria NetBeans, pero para este tutorial vamos a crear nosotros mismos las paginas y los beans en la segunda parte.

Nos vemos en la 2da parte.. Da clic AQUI!!



Comentarios