Bitácoras
Maven java.lang.OutOfMemoryError
Trabajando con maven recientemente tuve problemas durante el proceso de construcción de mi aplicación y es que la compilación terminaba abruptamente especificando el siguiente error.
java.lang.OutOfMemoryError: Java heap space ...
WebLogic, Hibernate y el ClassNotFoundException org.hibernate.hql.ast.HqlToken
Recientemente he tenido que lidiar con el problema mencionado en el título de este artículo y que a continuación describiré, una aplicación Java web desarrollada utilizando Struts 2, Hibernate 3, Spring 3, desplegada en un contenedor de aplicación WebLogic 10 y el resultado es...
org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken
Introducción a Maven
Es una herramienta de la Apache Software Foundation especializada en gestionar el ciclo de vida de proyectos de software, cuya filosofía es proporcionar un esquema consistente para la ejecución de las diversas fases de la construcción del software, desde la creación del proyecto en sí, hasta distribución del o los componentes producto del proyecto.
Dentro de la principales características que hacen de maven una potente herramienta para la gestión de proyectos de software se encuentran las siguientes.
Pruebas unitarias en Spring con JUnit
Generar pruebas unitarias de los componentes de nuestras aplicaciones es una tarea que puede llegar a ahorrarnos bastantes dolores de cabeza, a través de estas damos pasos adelante en el aseguramiento de la calidad del software que construimos. La evolución de los frameworks de pruebas modernos nos ha proporcionado la oportunidad de poder generar componentes de pruebas basados en anotaciones como en el caso de JUnit.
Integración de Spring MVC 3 y Tiles 2
Spring MVC es un framework ligero para desarrollo de aplicaciones web que implementa el patrón Modelo-Vista-Controlador. Con Spring MVC podemos generar controladores basados en POJO's a través de anotaciones como @Controller y @RequestMapping, podemos realizar mapeo de peticiones, resolución de vistas, gestión de internacionalización e incluso resolución de temas.
Maven. Instalar fuentes y javadocs en el repositorio
Cuando gestionamos nuestros proyectos de software con Maven tenemos la posibilidad de instalar en el repositorio no sólo la distribución binaria
mvn install
También podemos configurar el POM para instalar los fuentes y los javadocs del proyecto.
Configuración para agregar los fuentes
JPA y los numéricos autoincrementales de Oracle
Acerca de la creación de campos numéricos autoincrementales en Oracle hemos visto anteriormente diferentes opciones a través del manejo de secuencias y triggers. Ahora veremos como integrar esta solución con anotaciones JPA para definir nuestros objetos entidad.
Nuestra modelo de datos se define de la siguiente manera.
Spring MVC. Mapeo de peticiones.
Anteriormente hemos visto la forma básica para generar controladores basados en anotaciones, hoy revisaremos las opciones que tenemos para realizar el mapeo de peticiones hacia los métodos de nuestros controladores.
Establecer ruta base
Tenemos la posibilidad de establecer la ruta base de la peticiones que atenderá nuestro controlador al combinar el uso de la anotaciónorg.springframework.web.bind.annotation.RequestMapping a nivel clase y método de la siguiente manera.
Campos numéricos autoincrementales en MySQL, SQL Server y Oracle
Al trabajar con base de datos relacionales debemos cumplir con las formas normales para garantizar la integridad de la información así como para evitar la redundancia de la misma.
La primer forma normal indica entre otras cosas que la tabla debe contener una clave primaria la cual será única y no deberá contener valores nulos. A continuación revisaremos cómo generar claves primarias en MySQL, SQL Server y Oracle.
MySQL
Principio de responsabilidad única
Dentro del paradigma de desarrollo de software orientado a objetos existe el Principio de responsabilidad única, que se refiere a la delimitación de responsabilidades de una clase. El principio es bastante simple (al menos en la teoría) e inttuitivo y enuncia que una clase únicamente debe tener una razón para modificar su estado.
Responsabilidad única es un principio fundamentado y reforzador del concepto de cohesión toda vez que una clase con una sola responsabilidad (razón del cambio) cumple por consiguiente con una alta cohesión.
