15 diciembre 2016

MVC Java EE 8 con JPA Modeler

JPA MODELER

Es una herramienta grafica de código abierto que nos proporciona una mejor tarea al momento desarrollar una aplicación CRUD(Create, Read, Update, Delete) con el framewrok MVC para Java EE 8, Solamente toma pocos tiempo, para crear modelos complejos de relación entre entidades. Ayuda a los desarrolladores de software a crear, diseñar y editar modelos empresariales de aplicaciones de persistencia Java, pueden crear clases JPA, visualizar, modificar base de datos y automatizar la generación de código Java EE 8. Automatiza la generación de código Java a través de JPA 2.0 a partir de diagramas de clases JPA. El JPAModeler proporciona la capacidad de ingeniería inversa, modelo de importación desde una base de datos existentes, generando SQL/DDL complejos y mucho más.


Esta herramienta te sirve para realizar o crear un prototipo a un cliente, si te gusta aprender nuevas tecnología JPA Modeler es muy recomendable.

Al construir una aplicación web CRUD, usando NetBeans IDE 8.2, que interactúa con una base de datos back-end. La aplicación le ofrece la posibilidad de ver y modificar los datos contenidos en la base de datos, también conocida como funcionalidad CRUD (Create, Read, Update, Delete). Para empezar desde cero, es decir, la base de datos no contiene ninguna tabla preexistente, el complemento JPA Modeler se utiliza para la generación de clases de entidad.

Después de generar las clases de entidad, puede crear la interfaz web para mostrar y modificar los datos mediante el asistente JSF Pages from Entity Classes para crear beans gestionados JSF y EJBs para las clases de entidad, así como un conjunto de páginas de Facelets de Primefaces a Manejar las vistas para los datos de la clase de entidad.

Nota: Aunque Java EE 8 todavía no se ha liberado, es posible usar el framework MVC ya en algunos servidores Java EE 7, ya que la implementación de referencia de la especificación MVC llamada Ozark está completa.

En este ejemplo vamos a desarrollar una aplicación sencilla con el framework MVC 1.0 (Modelo-Vista-Controlador) de java EE 8.

Requisito 

Software
Link de Descarga
Java SE 8
Netbeans 8.2
JPA Modeler 2.6.4
       Payara 4.1/ GlassFish 4.1
Ozark 1.0.0-m02


Nota: Ozark no forma parte de GlassFish / Payara, por lo que el ámbito debe estar configurado en runtime en pom.xml con las dependencias de maven para asegurar que se incluye con su aplicación.

  • Creamos un nuevo proyecto como se muestra en la figura 1
Figura 1


  • Seleccionamos Maven=> Web Application  y presionamos Next como se muestra en la figura 2
Figura 2


  • Diligenciamos el nombre del Proyecto, la ubicación el id, grupo, versión y paquete, presionamos Next como se muestra en la figura 3
Figura 3


  • Seleccionamos el servidor de aplicaciones que utilizaremos en este caso “Payara Server 4.1” y la versión de Java EE que es “Java EE 7 Web” presionamos Finish como se muestra en la figura 4
Figura 4

Crear el Diagrama de JPA
  • Creamos un Nuevo archivo como se muestra en la figura 5

Figura 5


Seleccionamos en la categoría Persistencia=> El tipo de archive “JPA Modeler” y presionamos Next como se muestra en la figura 6

Figura 6

  • Diligenciamos el nombre del archivo y su respectiva ubicación y presionamos Next como se muestra en la figura 7
Figura 7

  • Visualizamos el diagrama de JPA, como se muestra en la figura 8, desde esta paleta agregamos la entidad.
Figura 8

Crear las Entidades

  • Visualizamos la paleta de JPA Modeler que está conformado por Clase JPA y los Atributos como se muestra en la figura 9, desde esta paleta agregamos la entidad.
Figura 9

  • Presionamos doble click sobre la entidad  y modificamos con el nombre cliente, por defecto ya tiene un atributo con la clave primaria como se muestra en la figura 10.
Figura 10

  • En este paso Agregamos los atributo para este ejemplo escogemos el atributo Básico, donde colocaremos los nombres de los atributos de la entidad, como se muestra en la figura 11.
Figura 11


Crear Relación entre Entidades

  • Como en el paso anterior agregamos las clases de entidades, en la figura 12 visualizaremos como quedo junto a con sus respectivos atributos.
Figura 12

  • Presionamos click  sobre la propiedad de la entidad y arrastramos a la clase ProductoOrden, como se muestra en la figura 13.

Figura 13

  • Presionamos click  sobre la propiedad de la entidad y arrastramos a la clase Producto, como se muestra en la figura 14.
Figura 14

  • Así sucesivamente ya tenemos la relación entre las entidades como Cliente, Producto y ProductoOrden con sus respectivos atributos como se muestra en la figura 15.
Figura 15

  • Damos click derecho sobre el Diagrama de JPA y se visualiza el siguiente formulario, en este caso presionaremos click en Visualizacion DB, como se muestra en la figura 16.
Figura 16

  • Después de realizar el paso anterior nos muestra el diagrama de la base de datos, como se muestra en la figura 17.
Figura 17


  • En este paso crearemos la base de datos, seleccionamos Services=>DataBase click derecho Create Database, como se muestra en la figura 18.
Figura 18

  • Diligenciamos el nombre de la base de datos, usuario, password y confirmación del password, presionamos OK como se muestra en la figura 19.
Figura 19

  • Después de realizar el paso de crear una base de datos, realizaremos la conexión, como se muestra en la figura 20.
Figura 20

  • Para este caso escogemos Java/Derby, también puedes utilizar MySql, y presionas Next, como se muestra en la figura 21.
Figura 21

  • Seleccionamos el Driver, colocamos el nombre de la base de datos que creamos anteriormente, usuario y password, presionamos el botón Test Connection para verificar que fue éxito la conexion, en caso afirmativo presionamos Next, como se muestra en la figura 22.
Figura 22

  • Como ya está la conexión con la base de datos el paso siguiente es Seleccionar el combobox de la parte superior, y escogemos el driver que configuramos en el paso anterior, como se muestra en la figura 23.

Figura 23

  • Regresamos al diagrama de JPA como lo muestra la figura 12, click derecho y seleccionamos Persitence.xml, como se muestra en la figura 24.
Figura 24

  • Seleccionamos el boto Add que se encuentra en la parte superior derecha para realizar la configuración de la persistencia, como se muestra en la figura 25.
Figura 25

  • Configuramos la unidad de persistencia de la siguiente forma Persistence Provider = EclipseLink (JPA 2.1) que esta por defecto, en el Data Source para este caso seleccionamos New Data Source, como se muestra en la figura 26.
Figura 26

  • Colocamos un nombre para identificar el nombre del JNDI, en el database Connection seleccionamos Jdbc:derby://localhost:1527/jpamodeler y presionamos OK, como se muestra en la figura 27.

Figura 27

  • Tenemos la configuración Persistence Units, guardamos, como se muestra en la figura 28.

Figura 28


Generar las Clases Entidades

  • Regresamos al diagrama de JPA como lo muestra la figura 12, click derecho y seleccionamos Generate Source Code, como se muestra en la figura 29.
                                                                               Figura 29




  • Entity Package: Escogemos el paquete, como se muestra en la figura 30.


 Figura 30

  • Business Service: Seleccionamos Session Bean Facade que nos permite configura el paquete Session Bean y el nombre de la clase Facade EJB que utilizaremos en la aplicación, como se muestra en la figura 31.


Figura 31

  • Controller: Seleccionamos MVC 1.0 que nos permite configura el paquete del controlador a usar y la clase MVC que utilizaremos en la aplicación, como se muestra en la figura 32.


Figura 32

Un simple ejemplo Java EE MVC Controller



La anotación @Controller se puede usar en métodos y clases:
  • Cuando se usan en clases, todos los métodos de la clase se consideran controladores.
  • Las clases con métodos Controller son beans administrados de CDI denominados Hybrid class (contiene una mezcla de métodos de recursos JAX-RS y controladores MVC).

Se activa la opción Hybrid Class


  • Retornar Type: Hay muchos tipos de retorno diferentes cuando se trabaja con métodos o clases @Controller. El tipo de retorno del método de un controlador determina cómo se procesa su resultado. En la siguiente pantalla, puede definir el tipo de retorno Controladores para este caso escogemos String e.g: “page/Viewwer.jsp”.


  • Seguridad: Proteger contra ataques maliciosos es una gran preocupación para los desarrolladores de aplicaciones web. Dos de las formas más comunes de ataques cross-site request forgery (CSRF) y cross-site scripting (XSS) pueden evitarse mediante la siguiente opción:



  • Construir Eventos: Uso de las siguientes opciones La aplicación MVC puede estar informada de los eventos importantes que ocurren durante el procesamiento de una solicitud. Este mecanismo se basa en eventos CDI que pueden ser disparados por implementaciones y observados por aplicaciones.

  • Bean Validation: Manejar validaciones de formulario en MVC 1.0 es bastante simple. Utilizando la siguiente opción NetBeans agregará la clase javax.mvc.binding.BindingResult (que tiene que usarse para manejar errores de validación).



Configurar la aplicación: 

Para crear nuestra aplicación MVC también necesitamos una clase de aplicación JAX-RS: La subclase de javax.ws.rs.core.Application se puede utilizar para definir componentes JAX-RS adicionales. En la siguiente pantalla, puede configurar @ApplicationPath (que define la ruta base de nuestra aplicación) y el nombre de la clase.



Vista:

Seleccionamos para este ejemplo vista =>JSP En este tutorial, NetBeans generará un conjunto de páginas JSP (create.jsp, update.jsp, list.jsp y view.jsp) que se utilizan para manejar cada escenario posible.

En la siguiente pantalla, puede configurar la ubicación de la plantilla JSP dentro del proyecto web y también puede definir si el script y los archivos de hoja de estilo (Twitter Bootstrap, jQuery etc.) deben estar offline o en línea (cdnjs), como se muestra en la figura 33

Figura 33

Click sobre el botón Genereate y el resultado es como la figura 34


Figura 34

Inspeccionar el código: 
  • Netbeans genero múltiples archivos paquete de códigos y páginas web como se muestra en la figura 35.
Figura 35


  • Paquete de códigos donde se discrimina por paquete, como modelo, controlador y servicios en la figura 36.


Figura 36



Implementar:

Se genera el código fuente. Ahora, compruebe la dependencia de maven de Ozark en pom.xml.



  • Click derecho sobre el Proyecto y seleccionamos Build with Dependecies.




  • Click derecho sobre el Proyecto para ejecutarlo, seleccionamos RUN.




  • Menú principal, Damos click en la parte de cliente para agregar un cliente.


  • Diligenciamos todo los campos de clientes, y después presionamos submit




  • Automáticamente nos dirige a la página donde se encuentra toda la información de todo los clientes adicionados para este caso solamente hemos ingresado uno.


  •           Visualizamos todo los productos.


10 comentarios:

  1. Respuestas
    1. De nada amigo, la idea es seguir contribuyendo a la comunidad

      Borrar
  2. excelente la info que nos liberas en este post, gracias por ser tan detallado y explicativo

    ResponderBorrar
  3. Hola
    Me siento identificado y estoy feliz con este contenido
    Tu artículo me sirve mucho y te doy las gracias
    Tengo expectativas sigas posteando
    y sigas dando soporte
    Hasta luego

    ResponderBorrar
    Respuestas
    1. Muchas gracias Leganes, si claro la idea seguir contribuyendo con la comunidad, por ahora he estado muy ocupado pero en diciembre y enero publico varios post

      Borrar
  4. Respuestas
    1. Hola Fidel

      anexo link de descarga de la aplicación https://github.com/Geovanny0401/JPAModeler

      Borrar