jueves, 5 de abril de 2012

INTEGRACION SPRING 3 + MONGODB + SERVLET + MAVEN

Hola en esta oportunidad mostrare una integración bien interesante se trata de la integración de Spring 3 con un Motor de datos No-Relacional osea Orientado a Objeto llamado MongoBD y todo administrado con el estándar maven .

Explicando un poco podemos decir que al maneja BD relacionales como Oracle, SQLServer, MySql, DB2 dentro de un App Web independientemente del lenguaje que te tenga la aplicación, uno sacrifica mucho tiempo al momento de realizar el Mapping de los Objetos (Beans) a sentencias SQL o JOINs para uno traer los datos respectivos. Una solución a esto es usar un Framework ORM que facilite este mapping y haga de tu persistencia que luzca como un seudo manejo orientado a objetos. Pero en si, si se desea ganar ese tiempo perdido en el mapping se lograría la usar Bases de datos no relacionales como MongoDB siguiendo la tendencia del NoSql que tan bien les ha ido a grandes como: Twitter, Facebook, etc.

Lo ORM relacionado a los CRUD y QUERYs de persistencia, nos ayuda a ya no tener que estar ejecutando SQL sino que de frente orientar todo a un pseudo manejo orientado a OBJETOS ya que tu programación si es que ya esta orientada a objetos es ilógico que lo tengas de transformar a: NO OBJETOS (DB Estructural) para guardar persistir en BD. Para eso son los ORM nos brindan una capa de mapping automática para poder persistir mas fácilmente COMO DEBE DE SER.

Al Integrar con BD Orientadas a Objetos aumentamos la rapidez de nuestros aplicativos, ya que nos olvidamos en si de la capa de ORM (Mapping) sino que de frente persistiremos nuestros objetos cargados.

Iniciaremos el post explicando un poco como descargar e instalar MongoDB en un ambiente WINDOWS XP:

1. DESCARGAR [MONDODB]: MongoDB., que es el servidor de BD.

2. DESCARGAR [MONGOVUE]: MongoVue., que es la herramienta por excelencia para administrar MongoDB .

INSTALACION MONGODB:
Luego de descargar el zipeado de MONGODB .

PASO #0: Configurar variables de entorno que apunten al directorio BIN en la ruta
del zipeado descargado de MONGODB .

DENTRO DE [PATH] EN VARIABLES DE ENTORNO APUNTAR:
C:\JAVA\MONGODB\mongodb_win32_v1.6.5\bin

PASO #1:
C:\> mkdir "C:\JAVA\MONGODB"

PASO #2:
C:\> cd "C:\JAVA\MONGODB\mongodb_win32_v1.6.5\bin"
C:\JAVA\MONGODB\mongodb_win32_v1.6.5\bin> mongod


PASO #3: CREAR DIRECTORIOS:

C:\> mkdir "C:\JAVA\MONGODB\mongodb_win32_v1.6.5\data"
C:\> mkdir "C:\JAVA\MONGODB\mongodb_win32_v1.6.5\data\db"
C:\> mkdir "C:\JAVA\MONGODB\mongodb_win32_v1.6.5\logs"
C:\> mkdir "C:\JAVA\MONGODB\mongodb_win32_v1.6.5\conf"


PASO #4: INICIAR EL SERVICIO [MongoDB]:

mongod --logpath "C:\JAVA\MONGODB\mongodb_win32_v1.6.5\logs\log.txt" --dbpath "C:\JAVA\MONGODB\mongodb_win32_v1.6.5\data" --install


PASO #5: INICIAR EL BD:

- OPCION #1 [DIRECTA]: C:\>net start "MongoDB"
- OPCION #2 [ADMNISTRADOR SERVICIOS]: C:\>services.msc , luego buscar el servicio "MongoDB" e iniciarlo.

PASO #6: PROBAR CONEXION DESDE CONSOLA:

C:\> mongo
> 10+10
6
> db
test
> db.foo.insert( { a : 1 } )
> db.foo.find(){ _id : ..., a : 1 }
> show dbs
...
> show collections
...
>exit
bye


PASO #[EXTRA]:

- 'REPARAR' SERVICIO [MongoDB]: mongod --repair
- 'ELIMINAR' SERVICIO [MongoDB]: mongod --remove

Ya tenemos instalados MongoDb ahora requerimos lo siguiente:

- Eclipse v3.6 (Plugin Maven).
- Tomcat 6 (Instalado).
- Maven (Ya configurado).


1. Iniciamos el cliente MONGOVUE y nos conectamos a la BD:



2. El Dummy al ser cargado en Eclipse y desplegado en Tomcat mostrara la siguiente interfaz:


3. Al procesar el APP se ejecutara el Servlet: ValidaMongoDbServlet, que probara los escenarios comunes que se pueden dar al trabajar con procesos transaccionales (CRUD y QUERYs), pero esta vez no apoyándonos en un ORM sino que persistiendo en un BD orientada a objetos [MongoDB]. Los procesos a testear son los siguientes:

- registrarUsuario
- loginUsuario
- actualizarUsuario
- obtenerUsuario
- obtenerListaUsuarios
- eliminarUsuario



Finalmente, veremos que el Dummy ha creado el esquema: DB_PLANTILLA en MongoDB y la Colleccion (Tabla): TB_USUARIOS, donde se registraron 2 registros que en el transcurso del Dummy se han creado y modificado. Lo intersante es que MongoDB al reliaza un persistencia de un Objeto aninado (AGREGACION o COMPOSICION), este lo guarda de forma directa en su propio registro de BD, esto se prueba apreciar mediante la herramienta cliente en la relacion USUARIO - PRODUCTO que hemos probado.




Para un mejor entendimiento del manejo de este Framework, puedes descargar el proyecto 'Eclipse Mavenizado' completo: AQUI.

No hay comentarios: