Java y MongoDB
Vamos a ver qué fácil trabajar con Java y
Mongo. Para nuestro ejemplo vamos a usar una base de datos desarrollada en MLab (pueden
usar este documento para ver cómo funciona). Para poder trabajar con los documentos vamos a crear objetos en Java de tipo
POJO y luego estos los podemos guardar en nuestra base de datos.
Primero vamos hacer una pequeña aplicación en
Java. Esta le vamos a llamar Agenda.
Para que el proyecto funcione vamos a requerir
agregar dos librerias a nuestro projecto. La primera es mongo-java-drive-3.4.2.jar
y bson-3.5.0.jar
Cuando tenemos esto listo vamos a crear dos paquetes
uno llamado Mongo y otro POJO. En el paquete de mongo vamos a tener el código y
la configuración necesaria para conectarnos a nuestra base de datos. Mientras que
en la de POJO solo una clase que nos permite almacenar la información que
deseamos guardar.
Vamos a estudiar primero la clase mongoBase en
esta clase tenemos la configuración básica para nuestro base de datos.
import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import static com.mongodb.client.model.Filters.eq; import org.bson.Document;
Como vemos lo primero que tenemos que hacer es
importar las librerías que vemos de la línea anteriormente.
private final MongoClientURI uri; private final MongoClient mongoClient; private final MongoDatabase database; private final String collectionName;
Vamos a declarar 4 variables para la configuración
básica de nuestro sistema.
uri: esta va a tener la dirección de
nuestra base de datos
mongoClient: vamos a inicializarla con la dirección
de nuestra base de datos
database: esta variable tiene el nombre de
nuestra base de datos
collectionName: con esta variable guardamos
el nombre de la colección para guardar nuestros datos.
public mongoBase(final String collectionName) { this.collectionName=collectionName; uri = new MongoClientURI("mongodb://<user>:<password>@ds123698.mlab.com:23698/agenda"); mongoClient = new MongoClient(uri); database = mongoClient.getDatabase("agenda"); }
Ahora debemos inicializar las variables en el
constructor. La primera es la dirección de la base de datos. Esta dirección la
podemos encontrar en nuestra configuración en mLab.
public <T> void saveDocument(T objectToSave) { MongoCollection collection = database.getCollection(collectionName); collection.insertOne(getDocument(objectToSave)); }
Continuamos
con el método saveDocument con el que
vamos a poder guardar cualquier documento en nuestra base de datos. Por el
momento solo vamos a guardar documentos de personas.
Vamos a inicializar una variable de tipo MongoCollection
usando la colección que deseamos usar para almacenar los datos.
Ahora vamos a usar la variable collection que
acabamos de hacer y utilizando el método insertOne vamos a guardar nuestra información.
protected abstract <T> Document getDocument(T objectToSave);
Para crear el documento que deseamos guardar en
nuestra base de datos de mongo debemos utilizar el método getDocument. Este método
se debe sobrescribir.
Ahora vamos a la clase AgendaController en esta
clase vamos a especializar la clase base de mongo para poder manejar nuestros objetos
de tipo Person.
public AgendaController() { super("AgendaCollection"); }
En el constructor de la clase le vamos a pasar
el nombre de nuestra colección para que se establezca de manera global en
nuestra clase base mongoBase.
@Override public <T> Document getDocument(T objectToSave) { Person contact = (Person) objectToSave; Document doc = new Document("name", contact.getName()) .append("phone", contact.getPhone()) .append("email", contact.getEmail()) .append("lastName", contact.getLastName()) .append("cellPhone", contact.getCellPhone()); return doc; }
Debemos a sobreescribir el método getDocument
de la clase base. Este método va a crear los documentos de tipo Person que
vamos a guardar en nuestra base de datos. Como vemos en el método se pasa por parámetro
el objeto que deseamos guardar.
Luego lo convertimos a un objeto de tipo Person
y luego extraemos la información de sus variables. Con la variable doc que es
de tipo Document vamos a crear nuestro documento para guardarlo en la base de datos.
Como vemos agregamos cada una de las propiedades al documento cuando este esta
listo con un return enviamos el documento listo.
public List<Document> getDocuments(final String name, final String lastName) { MongoCollection<Document> collection = super.getDatabase().getCollection("AgendaCollection"); List<BasicDBObject> obj = new ArrayList<BasicDBObject>(); obj.add(new BasicDBObject("name", name)); obj.add(new BasicDBObject("lastName", lastName)); BasicDBObject whereQuery = new BasicDBObject(); whereQuery.put("$and", obj); List<Document> documents = collection.find(whereQuery).into(new ArrayList<Document>()); return documents; }
En esta clase también tenemos el método getDocuments
que nos permite hacer búsquedas en nuestra base de datos de mongo. Nuestro método
va hacer búsquedas usando el nombre y apellido de la persona.
Para hacer la búsqueda vamos hacer una referencia
de la colección donde se encuentran nuestros datos. Esto lo hacemos con la
variable collection.
Luego vamos a tener una lista de tipo BasicDBObject
que llamamos obj. En este objeto vamos a agregar los filtros para buscar
nuestros datos. Cuando agregamos todos los datos que queremos usar para filtrar
creamos una variable que llamamos whereQuery que también es un BasicDBObject en
vamos agregar la función “and” y la lista con los criterios de búsqueda.
Ahora llamando el método find de la variable
collection vamos a ejecutar la búsqueda. En el método find agregamos la
variable whereQuery que ya preparamos con todo lo necesario para buscar
documentos. Los resultados serán almacenados en la varible List
para poder hacer lo que sea con ellos.
Finalmente, en el main creamos un objeto nuevo
de tipo Person y luego creamos un objeto de tipo AgendaController con nombre
agenda. Hacemos llamado al método saveDocument y le pasamos el objeto person
para que sean guardados en la base de datos. Ahora ejecutamos el método getDocument
y le pasamos el nombre de la persona que creamos para ver si se guardo en la
base de datos.
Ejemplo completo
Ejemplo completo
0 comentarios:
Publicar un comentario
Suscribirse a Enviar comentarios [Atom]
<< Inicio