Skip to main content
Mongo, Jongo, Fongo unidos en Xongo

Mongo, Jongo, Fongo unidos en Xongo

En este artículo hablaremos de 2 herramientas para facilitar nuestros desarrollos en Java usando MongoDB como base de datos. Jongo, para disponer de la sintaxis de la shell de MongoDB en el driver de Java y Fongo, para disponer de un MongoDB emulado en memoria.

Jongo:

Los que hemos pasado por vivir MongoDB vía shell nos encontramos con que el driver de Java tiene una sintaxis propia y no muy parecida. Por otro lado, para desarrollar, tenemos la tarea de estar generando instancias continuamente con objetos de BasicDBObject para operar con la BD.  Aquí es donde entra en juego Jongo, que nos permite utilizar la misma sintaxis de la shell para lanzar consultas en el driver de Java. En la página oficial de http://jongo.org/ podemos encontrar ejemplos así de ilustrativos:

SHELL

db.friends.find({age: {$gt: 18}})

JAVA DRIVER

friends.find(new BasicDBObject("age",new BasicDBObject("$gt",18)))

JONGO

friends.find("{age: {$gt: 18}}").as(Friend.class)

Si por un motivo o por otro no te encajan soluciones tipo Spring Data, Jongo puede serlo a la perfección. Como podemos observar, los filtros de búsqueda los implementamos de forma muy parecida a la shell de MongoDB. Otra de sus bondades es parsear automáticamente los resultados a objetos Java definidos por nosotros como POJOs. De esta forma siempre recibiremos objetos o listas de objetos propios de nuestro modelo en formato Java.

Fongo:

Fongo es ideal para no depender de MongoDB a la hora de arrancar nuestra BD. Esto puede ser beneficioso, por ejemplo, a la hora de lanzar test contra un entorno, garantizando que está recién poblado de datos. También puede ser útil para que un desarrollador front pueda trabajar con una instancia local del backend sin más dependencias. Para usarlo, basta con instanciarse un cliente de Fongo en lugar de un cliente de MongoDB:

MONGO

DB db = new MongoClient(HOST).getDB("Database");

FONGO

DB db = new Fongo("Test").getDB("Database");

Xongo:

Igual que el proyecto XAMPP usa su primera letra como variable no definida, en Xongo nos referimos a la fusión de estas 3 tecnologías, dado que todas son compatibles y pueden incluirse en nuestros proyectos con Maven de forma muy sencilla. A continuación podemos ver las dependencias del fichero POM:

Al devolver una instancia de la clase DB  – tanto el cliente MongoDB como Fongo- las operaciones que realizamos son las mismas y nuestro código no se ve afectado. Habitualmente se instancia uno u otro en función de la configuración mediante constantes, properties, etc.

Conclusión:

Xongo se plantea como una buena solución para proyectos pequeños donde, por un motivo u otro, no encajan soluciones tipo Spring Data o donde tenemos claro que vamos a casarnos con MongoDB durante toda la vida de la aplicación.

Si deseas verlo funcionando, puedes descargarlo desde GitHub en:

https://github.com/PabloPerezAguilo/xongo

Gracias a David Lorenzo por diseñarnos un logo 😀

 
 
 

Pablo Pérez Aguiló

Consultor SOA. Graduado en Ingeniería del Software y Máster en Ingeniería Web por la UPM. Apasionado de las nuevas tecnologías, metodologías ágiles y la enseñanza.

Pablo Pérez Aguiló ha escrito 6 entradas


Pablo Pérez Aguiló

Consultor SOA. Graduado en Ingeniería del Software y Máster en Ingeniería Web por la UPM. Apasionado de las nuevas tecnologías, metodologías ágiles y la enseñanza.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *