Mostrando entradas con la etiqueta Spring. Mostrar todas las entradas
Mostrando entradas con la etiqueta Spring. Mostrar todas las entradas

sábado, 19 de septiembre de 2015

APLICACIÓN DE 'EHCACHE' CON 'SPRING'


El manejo de 'Cache' en las aplicaciones y servicios es muy importante, ya que agiliza la obtención de los datos evitando estar constantemente golpéando la BD. La ventaja que proporcionan en si las 'caches' básicamente es eliminar los tiempos de acceso a un recurso externo, para recuperar los datos que se encuentran mantenidos en cache, pero hay que tener cuidado en tener claro cuando y como realizarlo, así mismo como configurarlo.

En esta oportunidad mostraré una forma de como trabajar con una de las librerías open source más conocidas para el manejo del 'cache' que es 'Ehcache'. Esta librería posee un principio básico que es dividir la caché en diversas 'regiones' configurables donde se ubican los objetos.

Sus características principales son:

  • Rápido y simple de usar.
  • Pequeño (menos de 700 kb) y con pocas dependencias.
  • Escalable: permite, por un lado, escribir a disco y, por otro, trabajar con muchos caches en paralelo.
  • Flexible: permite trabajar con Objects o Serializables y configurarlo mediante xml o programaticamente.
  • Extensible: se pueden adicionar plug-ins, loaders, listeners, JMX y exceptions handlers. Trabaja con varias APIs como JTA o frameworks como Hibernate.
  • Distribuído: posee muchas opciones de replicación de los datos.
El propósito de este post es mostrar de froma detallada su integración con 'Spring', configuración y aplicación, mediante un dummy.

Las librerias requeridas para desarrollar este dummy son las siguientes:



Es necesario que desde 'Spring' se maneje un archivo de configuración exclusivo para 'EhCache' (applicationCache.xml):



Así mismo 'EhCache' maneja un archivo 'xml' referenciado desde 'applicationCache.xml', en donde maneja toda la configuración personalizada del cache, para cada escenario donde se desee aplicar:



Se debe de tener muy claro el significado de la definición de cada propiedad que se maneja. Aquí el detalle de cada una de ellas:



La prueba del 'dummy' la realizaremos mediante una clase main, que levantará el contexto de 'Spring' y ejecutará 2 metodos de prueba (estos trabajan independientes, se puede comentar y probar el que desee):



Metodo#1: Simulación del consumo de DB (1 vez), luego se obtendrá del 'EhCache' el mismo dato durante '10' seg. Despues golpeará la BD otra vez:


El resultado de la prueba es que al ejecutar en un tiempo de 20 segundos, solo se ha obtenido de BD (simulada) la 1ra fecha (2015/09/19 09:33:17) y como ven la hora se mantiene ya que las demás consultas son obtenidas del 'EhCache' configurado, para que mantenga la información por 10 segundos, poteriormente a ellos volvera a actualizar la información con la BD:



Metodo#2: Simulación del consumo de DB (1 vez), luego se obtendrá del 'EhCache' el mismo dato durante '10' seg. Despues golpeará la BD otra vez y se iran agregando 5 registros a la lista anterior existente:



El resultado de la prueba es que al ejecutar en un tiempo de 20 segundos, solo se ha obtenido de BD (simulada) la 1ra lista de Mensajes con una cantidad de registros de 5 y como ven la hora se mantiene ya que las demás consultas son obtenidas del 'EhCache' configurado, para que mantenga la información por 10 segundos, poteriormente a ese tiempo volvera a actualizar la información con la BD y como se aprecia la lista ahora devuelve 10 registros, ya que existe una simulación que cada 10 segundos se le agregarán 5 registros (por efecto de la prueba respectiva):



Para los interesados las fuentes se pueden descargar aquí: http://www.mediafire.com/download/aasn2aysfu2aoyi/Dummy_Spring_EhCache.zip


viernes, 24 de diciembre de 2010

MANEJO SPRING JDBC

Que tal en esta oportunidad hablare sobre otra opción para el manejo de la persistencia que viene como aporte de SPRING , este es un módulo de SPRING que brinda conexión a múltiples motores de datos de una forma muy sencilla.

Spring JDBC simplifica el manejo del estándar JDBC, obviando partes importantes que comúnmente a un se le puede pasar como es la de abrir o cerrar sesiones y conexiones (DataSource) respectivas. Funciona para JDK 1.5 (+)

Desde Spring JDBC uno puede heredar de la clase JdbcDaoSupport y acceder a JdbcTemplate que brinda un soporte para un listado de métodos especializados (query, queryForObject, queryForList,etc) , así mismo uno puede manejar acceso a procedimientos almacenados mediante la clase SimpleJbcCall , entre varias otras funcionalidades.

El demo preparada esta bien detallada: Trabaja con Spring 3.0, Maven 2.2.1, Spring JDBC 2.5.6 (JdbcDaoSupport) y para la prueba respectiva hay un JUnit TestCase para un mantenimiento amarrado a: MySql 5.1 (Script en resources).

Para probarlo ejecutar la clase JUnit, descomentando previamente los procesos de cada mantenimiento: src/main/test/org/java/spring/test/TestSpringJDBC.java

Para descargar el demo pulsar Aquí

domingo, 19 de diciembre de 2010

MANEJO SPRING v3.0

Ahora que esta tan de moda el manejo del Framework SPRING mostrare un demo de su manejo, de una forma bien peculiar aplicada a la programación. Cabe recalcar que la idea base la cual me inspiro fue una muy similar que mostró en una exposición mi amigo Lennon Shimokawa de su demo TORTUGAS NINJA en su presentación sobre SpringCore.

El demo actual a mostrar, esta basado en la leyenda de la sobre la batalla MITOLOGICA de la TITANOMAQUIA que habla sobre batalla entre: "LOS DIOSES vs LOS TITANES". En aquella batalla los TITANES se revelan en contra de los OLIMPICOS conformados por los dioses que se reunían a debatir sus hazañas en el famoso monte OLIMPO.

DIOSES:
- ZEUS.
- POSEIDON.
- HELIOS/APOLO/ABEL
- HADES.

TITANES:
- CRONOS.
- REA.
- OCEANA.
- CRIO.

Programaticamente, se va a representar de forma dinámica la batalla mano a mano de c/u, mediante un JUnitTest:

org.java.spring.batalla.TestBatallaMitologica.java

Es importante decir que se utilizo MAVEN para la creación del proyecto JAVA y la IDE Spring Tools Suite v2.5.1 (STS) . Desde este LINK se puede verificar su manejo.

Finalmente, al ejecutar dicha clase se obtendrá una salida en consola similar a esta:

DATOS [DIOS]:
- NOMBRE: ZEUS
- ARMA: LANZA
- PODER: EL RAYO
- NIVEL: 100

DATOS [TITAN]:
- NOMBRE: OCEANA
- ARMA: NO TIENE
- PODER: SUPER FUERZA
- NIVEL: 80

INICIA LA BATALLA:
- EL DIOS: [ZEUS], UTILIZA SU PODER: [EL RAYO], CONTRA EL TITAN: [OCEANA]
- EL TITAN: [OCEANA], UTILIZA SU PODER: [SUPER FUERZA], CONTRA EL DIOS: [ZEUS]
- EL DIOS: [ZEUS], UTILIZA SU ARMA: [LANZA], CONTRA EL TITAN: [OCEANA]
- EL TITAN: [OCEANA], UTILIZA SU PODER: [SUPER FUERZA], CONTRA EL DIOS: [ZEUS]

FINAL:
- GANO EL DIOS: [ZEUS]

Para descargar el demo pulsar Aquí

MANEJO DE MAVEN DESDE (STS).

El tutorial mostrara una forma diferente de manejar MAVEN desde la IDE Spring Tools Suite v2.5.1 (STS), que es en realidad un ECLIPSE v3.6 con un mayor soporte de Plugins.

PASO #I:
Comenzaremos, configurando el MAVEN por defecto que viene con embebido en el Spring Source Tools Suite v2.5.1.

PASO #II:
Ingresamos en la barra de menú a:
Windows/preferences/maven/user preferentes, pulsamos el botón Browse y editamos el archivo:
settings.xml y mapeamos:

[localRepository>]C:\RepositorioMaven[/localRepository]

PASO #III:
Para un mejor control de nuestras librerías de JAVA, vamos a crear nuevo un Repositorio en la ruta:

C:\RepositorioMaven

Y lo registramos en la interfaz mostrada en el paso anterior.

PASO #IV:
Con la IDE ya configurada vamos a crear un nuevo proyecto MAVEN

File/new/other/Maven/Maven Project

PASO #V:
Ingresamos el WorkSpace donde será creado dicho proyecto MAVEN.

PASO #VI:
Filtramos por el archetype: que deseamos utilizar:

ARCHETYPE: maven-archetype-webapp.

PASO #VII:
Registramos datos importantes de lo que será el POM.xml, archivo de configuración del MAVEN.

- GOUPID: org.java.spring
- ARTIFACTID: PROYECT_DEMO_SPRING_XML
- VERSION: 1.0
- PACKAGE: org.java.spring.PROYECT_DEMO_SPRING_XML

PASO #VIII:
Al archivo de configuración POM.xml ingresamos las dependencias de las librerías (.JARs) Spring 3.0 que vamos a utilizar, para su descarga respectiva.

PASO #IX:
Limpiamos el previamente el proyecto MAVEN creado y luego ejecutamos el dicho proyecto, para la validación y descarga de sus dependencias registradas

PASO #X:
Verificamos la descarga de los .JARs realizada en MAVEN DEPENDENCIES dentro del menú izquierdo.

PASO #XI:
Registramos un PLUGIN en el POM.xml para el soporte de JAVA 1.6 al compilar.

PASO #XII:
Limpiamos el previamente y luego ejecutamos el Proyecto MAVEN creado, para la validación y descarga de sus dependencias registradas.

PASO #XIII:
Verificamos el proceso realizado.

PASO #XIV:
Agregamos el soporte de SPRING al proyecto.

PASO #XV:
Creamos los SourceFolder para TEST y para JAVA.

PASO #XVI:
Mapeamos la configuración realizada hasta el momento.

PASO #XVII:
Como se va a manejar Spring en el proyecto creado, creamos el archivo de configuración de Spring:

applicationContext.xml

PASO #XVIII:
Editamos el "applicationContext.xml" creado, y registramos los NameSpace y esquemas con los que Spring trabajara. Así mismo creamos un paquete donde comenzaremos a trabajar y mapeamos el acceso al archivo de configuración "application-entityBean.xml".

PASO #XIX:
Accedemos al archivo de configuración de BEANs de Spring "application-entityBean.xml", aquí se mapearan las entidades simples o anidadas de nuestra aplicación (Lo ingresado es simbólico).

Para un mayor detalle de lo explicado (CAPTURAS DE PANTALLA), descargar el Tutorial de MAVEN(STS) completo pulsar: Aquì

sábado, 8 de noviembre de 2008

Integrando Spring 2.5 & Hibernate 3

Hola aquí les comparto mi aplicación demo donde muestra la integración que he realizado de los Frameworks: Spring 2.5 & Hibernate 3.
El entorno en la que he trabajo cuenta con lo siguiente:

- IDE: Red Hat Developer Studio 1.0.0.CR1
(http://www.jboss.com/products/devstudio)
Que integra un Eclipse 3.3 con una seria de plugins muy útiles como:
JBoss Application Server
Hibernate Tools
JSF Tools, etc. Y un entorno de diseño que para mi es el mejor.

- Plataforma: JAVA 6
- Frameworks: Spring 2.5 - Hibernate 3
- Motor de Datos: MySql Server 5.0

Explicación Ràpida:
El demo al ejecutarse muestra el resultado en consola de tres registros devueltos por tres listas y un bean devuelto por un objeto de la base de datos. El demo esta en base a un proyecto JAVA de tipo Web Dinámico, en donde he creado una Arquitectura que permita segmentar correctamente las Capas, Daos y Servicios respectivos. Si bien el demo no lo he hecho para Web (Esta Vez), la arquitectura que se maneja esta preparada para ser utilizada de esta manera (En un próximo demo mostrare ello).

Aquí estoy utilizando Spring 2.5 para el manejo de la capa de negocio y Hibernate 3 para lo que es la capa de persistencia. Asimismo, se esta manejando los populares y muy útiles Generic Dao. Además, en el ejemplo se muestra dentro de la clase (UsuarioDAOImpl.java), las diferentes formas de cómo manipular las transacciones en base al manejo de sesiones por medio de Hibernate 3 (métodos: obtenerUsuarioForma01 y obtenerUsuarioForma02) y por medio de Spring 2.5 (método: obtenerUsuarioForma03). Finalmente, la conexión en la aplicación la estoy manejando vía JDBC en base a 2 archivos:

• jdbc.properties (para Spring).
• hibernate.cfg.xml (para Hibernate).

Además, he puesto dentro de la carpeta DataBase el script de la base de datos que estoy utilizando, dentro de la carpeta lib del proyecto todas las librerías necesarias, para que simplemente importen el proyecto, en el Build-Path acomoden el JDK respectivo y listo. Finalmente, hay dos archivos dentro de la carpeta 'Otros':

• Driver_Url_JDBC: Muestra los diferentes Drives y URL para conexiones JDBC para diferentes motores de Datos.
• HibernateDialect: Muestra los diferentes Dialectos Hibernate para diferentes motores de Datos.

Para descargar la aplicacion Demo, pulsar AQUI..
Para descargar las librerias base del Demo, pulsar AQUI.

Espero que les haya gustado el demo preparado y ya estaré colgando en estos días este mismo ejemplo pero orientado netamente a Web y unido con otro Framework JSF.


Foto Aplicacion #1


Foto Aplicacion #2


Foto Aplicacion #3


Para descargar el PDF "SIMILITUD: HQL vs CRITERIA" pulsar: AQUI..