Arquitectura Java ARQUITECTURA JAVA SÓLIDA Cecilio Álvarez Caules 2 www.arquitecturajava.com © 2012 Cecilio Álvarez Caules. Todos los derechos reservados. ISBN : 978-1-291-16766-5 3 Arquitectura Java Agradecimientos Este libro esta dedicado a la comunidad de desarrolladores JEE de Cantabria puesto que muchos de los capítulos se basan en reflexiones fundamentadas en las distintas preguntas que se me han formulado estos años en los cursos y consultorías realizados para su entorno. Dichas aportaciones me han proporcionado un animo esencial para escribir este libro. Agradezco al grupo de arquitectura JEE del gobierno de Cantabria las distintas colaboraciones en las que hemos tomado parte estos años, ya que el presente libro recoge un cúmulo de ideas extraídas directamente de éstas. Agradezco, igualmente, al equipo humano de Consultec los distintos proyectos en los que he participado estos últimos años : me han hecho crecer como arquitecto y me han ayudado a obtener una visión más neutral a nivel tecnológico sobre las distintas plataformas y frameworks existentes. Mi agradecimiento va también para las aportaciones de las personas con las que trabajé mis primeros años de profesional en Mundivia. Esta etapa me ayudó a adquirir la visión necesaria sobre la orientación de mi futuro perfil profesional, algo que con el paso del tiempo ha sido clave en la evolución de mi carrera. Gracias, así mismo, a Jesús Martín Fernández y a Miguel Blanchard Rodríguez por las distintas charlas e intercambios de ideas que hemos tenido estos años sobre JEE , además de los enfoques y distintas visiones que me han venido aportado. Agradecer a Jose Manuel San Emeterio Perez de Emcanta los distintos procesos de certificación en los que participamos ambos ,que me permitieron definir el punto de partida de los contenidos del libro. Es también necesario agradecer a Jordi Álvarez Caules y a Ana Patricia Fernández del Llano la revisión del documento y las ideas objetivas y sinceras que me transmitieron sobre cómo mejorar el contenido. Agraceder a Olga Pelaez Tapia la revisión completa del documento a nivel de claridad de contenidos .Ya que sin ella tengo claro que muchas ideas no habrían quedado claras. Por último, agradezco a mis padres la educación en la cultura del conocimiento que me han proporcionado, ya que sin ella no me hubiera convertido en arquitecto. 4 www.arquitecturajava.com ARQUITECTURA JAVA SÓLIDA ....................................................................................... 2 Cecilio Álvarez Caules ....................................................................................................... 2 Agradecimientos ................................................................................................................. 4 Introducción ..................................................................................................................... 14 1. Conocimientos previos .......................................................................................... 14 2. Requerimientos de software ............................................................................... 15 3. Instalación del entorno ......................................................................................... 15 4. Configuración del entorno ................................................................................... 16 Resumen ............................................................................................................................. 20 1.HTML ................................................................................................................................ 22 1. Construir un formulario HTML .......................................................................... 23 2. Validaciones de JavaScript ................................................................................... 24 3. Añadir formato ........................................................................................................ 25 4. Uso correcto de etiquetas ..................................................................................... 26 5. Accesibilidad de la pagina .................................................................................... 27 6. Uso de XHTML como estándar. ........................................................................... 27 7. Uso de estándares DOM ........................................................................................ 28 8. Uso de JavaScript Degradable ............................................................................. 30 Resumen ............................................................................................................................. 32 2.Java Server Pages ....................................................................................................... 34 5 Arquitectura Java 1. Creación de una tabla Libros ............................................................................... 34 2. Instalar el driver JDBC. .......................................................................................... 35 3. Creación de la página “InsertarLibro.jsp” ...................................................... 36 4. Creación de la pagina MostrarLibros.jsp ......................................................... 38 Resumen ............................................................................................................................. 42 3.DRY y JSP ......................................................................................................................... 44 1. Añadir nueva clase .................................................................................................. 45 2. Modificar paginas JSP ............................................................................................. 48 3. Añadir Filtro por categoría .................................................................................. 50 4. El principio DRY y las consultas SQL ................................................................. 52 5. El principio DRY métodos y parametros ......................................................... 55 6. ResultSets vs Listas de objetos ............................................................................ 57 7. Uso de interfaces a nivel de Libro ...................................................................... 59 8. Cierre de conexiones y reflection. ...................................................................... 61 4.Editar, Borrar y Filtrar ............................................................................................... 66 1. Añadir enlace de borrar ........................................................................................ 67 2. Añadir método borrar ............................................................................................ 67 3. Añadir página BorrarLibro.jsp ............................................................................ 68 4. Añadir link Edición ................................................................................................. 69 5. Método de búsqueda por clave ........................................................................... 70 6. Añadir formulario de edición de código. ......................................................... 70 7. Añadir método salvar ............................................................................................. 73 6 www.arquitecturajava.com 8. Añadir pagina SalvarLibro.jsp ............................................................................ 73 9. Añadir método buscarPorCategoria. ................................................................ 75 Resumen ............................................................................................................................. 80 5.Manejo de excepciones .............................................................................................. 82 1. Flujo de excepciones y clausulas catch ........................................................... 83 2. Manejo de las claúsulas throw, throws y flujo de excepciones. ............... 84 3. Creación y conversión de excepciones ............................................................ 86 4. Excepciones anidadas ............................................................................................ 90 5. Excepciones RunTime ........................................................................................... 92 6. Crear Pagina de Error ............................................................................................ 94 7. Modificar fichero web.xml ................................................................................... 96 Resumen ............................................................................................................................. 97 6.Log4J ................................................................................................................................. 98 1. Instalación de log4j ................................................................................................ 99 2. Introducción a log4j ............................................................................................. 100 3. Construcción de un ejemplo sencillo .............................................................. 101 4. Mensajes de error y niveles. .............................................................................. 104 5. Manejo de Log4j.properties ............................................................................... 107 6. Uso de log4j en nuestra aplicación. ................................................................. 109 Resumen ........................................................................................................................... 111 7.El principio SRP y el modelo MVC ........................................................................ 112 1. Responsabilidades de la aplicación y el principio SRP ............................ 113 7 Arquitectura Java 2. Construir un servlet controlador .................................................................... 116 3. Mapeo de Servlet ................................................................................................... 117 4. Inserción con modelo MVC ................................................................................ 121 5. Borrar en modelo MVC ........................................................................................ 123 6. Editar en modelo MVC ......................................................................................... 125 7. Filtrado en Modelo MVC ..................................................................................... 127 Resumen .......................................................................................................................... 131 8.JSTL ................................................................................................................................ 132 1. Instalación de JSTL ............................................................................................... 133 2. Introducción a JSTL .............................................................................................. 133 3. Etiquetas Básicas JSTL ........................................................................................ 134 4. Modificar MostrarLibro.jsp ............................................................................... 135 5. Modificar Formulario Insertar ......................................................................... 136 6. Modificar FormularioEditarLibro.jsp ............................................................ 137 Resumen .......................................................................................................................... 137 9.El principio OCP y modelo MVC 2 ......................................................................... 138 1. El principio OCP y el Controlador .................................................................... 139 2. El principio OCP y el patrón Command ......................................................... 140 3. Creación de una acción principal .................................................................... 142 4. Crear jerarquía de acciones .............................................................................. 143 5. Api de reflection y el principio OCP ................................................................ 147 Resumen .......................................................................................................................... 150 8 www.arquitecturajava.com 10.Hibernate ................................................................................................................... 152 1. Introducion al concepto de framework de persistencia .......................... 153 2. Instalación de Hibernate .................................................................................... 154 3. Introducción a Hibernate ................................................................................... 155 4. Configuración Hibernate .................................................................................... 158 5. Insertar Libro con Hibernate ............................................................................ 161 6. Seleccionar Objetos con Hibernate ................................................................. 164 7. Seleccionar un único Objeto .............................................................................. 165 8. Borrar un objeto .................................................................................................... 166 9. Filtrar objetos con Hibernate ........................................................................... 167 10. Migrar nuestra aplicación a Hibernate ....................................................... 168 11. Hibernate y Convención sobre Configuración. ......................................... 172 12. DRY e Hibernate .................................................................................................. 174 11.Hibernate y Relaciones ......................................................................................... 180 1. Construir la clase categoría y mapearla ........................................................ 182 2. Modificar la Capa de presentación y soportar la clase Categoría ........ 184 3. Creación de relaciones entre clases ................................................................ 186 4. Relaciones y persistencia con Hibernate ...................................................... 188 5. Relaciones y capa de presentación ................................................................. 194 Resumen ........................................................................................................................... 197 12.Java Persistence API ............................................................................................... 198 1. Introducción al API de JPA ................................................................................. 200 9 Arquitectura Java 2. Migración de Aplicación a JPA .......................................................................... 204 3. Manejo de Excepciones ....................................................................................... 207 Resumen .......................................................................................................................... 208 13.El principio ISP y el patrón DAO ........................................................................ 210 Objetivos : ........................................................................................................................ 213 1. Crear las clases LibroDAO y CategoriaDAO. ................................................. 213 2. Uso de interfaces en componentes DAO ....................................................... 218 3. El principio DRY y el patrón GenericDAO .................................................... 221 4. Rendimiento ........................................................................................................... 228 Resumen .......................................................................................................................... 228 14.El principio de inversión de control y patrón factory ................................ 230 1. Crear Factorías e implementar el principio de IOC, .................................. 232 2. El principio DRY y el patrón Abstract Factory ............................................ 237 Resumen .......................................................................................................................... 243 15.El Principio DRY y el patrón servicio ............................................................... 244 1. El principio DRY y el acceso a la capa de persistencia ............................. 245 2. Creación de una clase de Servicio ................................................................... 247 Resumen .......................................................................................................................... 251 16.El principio IOCy el framework Spring ............................................................ 252 1. Creación de ejemplo de factorias .................................................................... 255 2. Instalación de Spring ........................................................................................... 261 3. Instalación de Spring en nuestra aplicación. .............................................. 266 10
Description: