COMUNICAÇÃO ENTRE JAVA E MONGODB

A Quinta postagem do blog será sobre a parte prática da  minha monografia de especialização em Desenvolvimento Java. Neste capitulo irá aprender a usar MongoDB juntamente com Java.

Boa Leitura.

Segundo o site da Oracle,

“Java é uma linguagem de programação e plataforma computacional lançada pela primeira vez pela Sun Microsystems em 1995. Existem muitas aplicações e sites que não funcionarão, a menos que você tenha o Java instalado, e mais desses são criados todos os dias. O Java é rápido, seguro e confiável. De laptops a data centers, consoles de games a supercomputadores científicos, telefones celulares à Internet, o Java está em todos os lugares!”

Segundo site do MongoDB (2016) para uma aplicação se comunicar com o MongoDB, precisamos de uma biblioteca cliente que chamamos de drivers. Estes drives lidam com toda a interação com o banco de dados em uma linguagem apropriada para a aplicação.

De acordo com Lennon (2012), “Drives oficiais disponíveis para C, C#, C++, Haskell, Java, JavaScript, Perl, PHP, Python, Ruby e Scala, com uma ampla variedade de drives suportados pela comunidade disponível para outras linguagens”.

OBTENDO O AMBIENTE DE TRABALHO

Nesta seção obteremos o nosso ambiente de desenvolvimento para trabalhar com o mongo no Java.

Inicialmente obteremos uma IDE para esta trabalhando com o Java, utilizaremos a plataforma eclipse, por ser considerada uma das melhores IDE para desenvolvimento na linguagem Java:

CRIANDO UM PROJETO JAVA COM MONGO

Iremos desenvolver uma simples aplicação Java utilizando o maven para esta obtendo o driver do mongo para sua conexão.

  • Vá em File → New → Maven Project e configure da conforme as figuras 43 e 44
43
Figura 43 – Novo Projeto Maven Fonte: Gerado pelo Eclipse
44
Figura 44 – Configuração do Projeto Maven. Fonte: Gerado pelo Eclipse.

Após seguir como demonstrada nas figuras 43 e 44, será gerada um projeto no eclipse chamado JavaMongo. Dentro deste projeto contém um arquivo chamado pom.xml, nele faremos umas configurações para o projeto bem como adicionar o driver do mongo para Java, como pode visto na figura 45:


<dependencies>
      <dependency>
             <groupId>org.mongodb</groupId>
             <artifactId>mongodb-driver</artifactId>
             <version>3.2.2</version>
      </dependency>
</dependencies>

<build>
      <plugins>
	     <plugin>
		     <artifactId>maven-compiler-plugin</artifactId>
		       <version>3.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
		      </plugin>
		</plugins>
	</build>

Figura 45 – Adicionado o MongoDrive Fonte: Gerado pelo Eclipse

Conforme a figura 45, no arquivo pom.xml, adicionamos o driver do mongo como dependência do projeto, que ao salva o arquivo o maven irá fazer o download da biblioteca especificada, assim com outras bibliotecas que o mongo drive necessita.

A partir deste momento daremos início à criação das classes Java para funcionar com o mongodb.

CRIANDO A CONEXÃO

Segundo o site do Mongodb, o MongoDrive fornece 5 maneiras de está se conectando nossa aplicação com o banco, como observado na figura 46:

import java.util.Arrays;

import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;

public class ExemploConexao {

     // Primeiro método - Sem Parâmetro
     MongoClient primeiroExemplo = new MongoClient();

     // Segundo método - Somente ip/host
     MongoClient segundoExemplo = new MongoClient("localhost");

     // Terceiro método - ip/host e porta
     MongoClient terceiroExemplo = new MongoClient("localhost",27017);

     // Quarto método - Lista de Conexões
     MongoClient quartoExemplo = new MongoClient(
            Arrays.asList(
                    new ServerAddress("localhost",27017),
                    new ServerAddress("localhost",27018),
                    new ServerAddress("localhost",27019)
                  )
               );

     // Quinto método - conexão por URI
     MongoClientURI quintoExemplo = new MongoClientURI(
            "mongodb://localhost:27017,localhost:27018,localhost:27019");
     MongoClient quintoExemploURI = new MongoClient(quintoExemplo);

     // Acessando ou criando um dataBase / caso não exista, será criado.
     MongoDatabase dataBase = primeiroExemplo.getDatabase("TCC");
     System.out.println("Conectado com Sucesso!");
}

Figura 46 – Conexão com MongoDBB Fonte: Autoria Própria

Conforme visto na figura 46, foram exemplificadas as maneiras de está se conectando uma aplicação java. Ela é semelhante as conexões de bancos relacionais, principalmente na variável chamada quintoExemplo, onde é passada um endereço para sua conexão.

Ao executarmos esta classe, será criado automaticamente um banco de dados chamados TCC, caso o mesmo não exista.

INSERINDO DADOS NO BANCO

Para criar um documento, utilizamos a classe Document do mongo driver. No mongo driver, os métodos insertOne() e insertMany() estão presentes e são utilizados da mesma forma que no mongo shell e ainda podemos fazer uso de documentos incorporados.

Antes de estarmos inserindo documentos, precisaremos criar uma collection para esta armazenando os dados.

A figura 47, exemplifica a utilização tanto do método insertOne quanto do insertMany, acompanhado da criação da coleção:

      // Criando a conexão
      MongoClient conexao = new MongoClient();

      // Acessando a DataBase TCC
      MongoDatabase dataBase = conexao.getDatabase("TCC");

      /*
       * Criando ou recuperando uma coleção
       * caso não exista, será criado uma collection usuarios
       */
        MongoCollection<Document> collection = dataBase.getCollection("usuarios");

       // Inserindo usando o insertOne()
       collection.insertOne(
               new Document("Nome","Daniel Dias")
                   .append("Idade",25)
                   .append("Info",
                         new Document("Email","daniel.dias.analistati@gmail.com")
                   .append("Telefone","21 1234-5678)
                 )
            );

     // Inserindo usando o insertMany()
     List<Document> documentos = new ArrayList<Document>();

     for(int i = 0; i < 2; i++) {
          documentos.add(
                  new Document("Nome","Daniel Dias")
                  .append("Idade",25)
                  .append("Info",
                         new Document("Email","daniel.dias.analistati@gmail.com")
                  .append("Telefone","21 1234-5678)
                )
           );
       }

       collection.insertMany(documentos);

Figura 47 – Inserir Autoria Própria

CONSULTANDO OS DADOS

Para retornar os dados utilizamos também o método find() que foi descrito em capítulo sobre o mongo shell.

Segundo o site do MongoDB, O método find() retorna uma instância de findIterable, que nos fornece uma interface fluente para encadear ou controlar as operações do find. Usando o método iterator() podemos obter um iterador sobre o conjunto de documentos que combinavam com a consulta e repita.

Podemos também querer retornar apenas um documento, através do método first() sobre o find(). Isso é útil para consultas que só deve corresponder a um único documento. A figura 48 demonstra o uso desses dois métodos:

     // Consultando todos os documentos
     MongoCursor cursor = collection.find().interator();

     try {
            while(cursor.hasNext()) {
                System.out.println(cursor.next().toJson());
            }
       } finally {
             cursor.close();
        }

      // Consultando o primeiro documento
      Document primeiroDocumento = 
                 collection.find(eq("Nome","Daniel Dias")).first();
      System.out.println(primeiroDocumento);

Figura 48 – Consultando Autoria Própria

ATUALIZANDO OS DADOS

Assim com o insert, o mongo drive oferece os mesmos métodos de update do shell que são updateOne e updateMany(). Esses dois métodos recebem dois argumentos para esta atualizando o documento, um é o critério de busca para o documento e a outra é um documento que contém os novos dados para atualização. A Figura 49 demonstra o uso dois métodos de update:

     // Atualizando o primeiro documento
     collection.updateOne(eq("Nome","Daniel Dias"),
          new Document("$set",
               new Document("Nome","Daniel")
             )
         );

    // Atualizando muitos documentos
    UpdateResult updateResult = 
                 collection.updateMany(eq("Nome","Daniel Dias"),
                     new Document("$set",
                           new Document("Info.Email","daniel@daniel.com.br")
                        )
                );      

Figura 49 – Alterando Autoria Própria

DELETANDO DADOS

O mongo drive contém métodos para remover documento de uma coleção. Os métodos correspondentes são deleteOne e deleteMany, que tem o mesmo funcionamento do que foi apresentado no mongo shell.  A figura 50 demonstra o uso destes dois métodos:

     // Deletando o primeiro documento
     collection.deleteOne(eq("Nome","Daniel"));

    // Deletendo todos os documentos
    DeleteResult deleteResult = 
             collection.deleteMany(eq("Nome","Daniel Dias")); 

Figura 50 – Deletando Autoria Própria

Algo importante a ser citado, tanto na operação de update quanto de deletar, foi incluída uma chama ao método eq, este método é utilizado para uma condição de busca no documento.

Para que o eclipse o reconheça será preciso importar sua classe com essa declaração :

import static com.mongodb.client.model.Filters.*;

Nesta sessão, abrangeu os primeiros passos com mongoDB e o Java, que permitiu executar as mesmas operações do mongo shell, que foi visto no capítulo anterior.

A sessão seguinte, iremos cria uma aplicação web simples utilizando o Java EE que usa Mongodb como armazenamento. Será demonstrada como esta tecnologia pode alavancar um cenário do mundo real usando construções simples.

REFERÊNCIAS

IBM – Lennon, Joe. Explore o MongoDB. 2011. Disponível em: < https://www.ibm.com/developerworks/br/library/os-mongodb4/ > Acesso em: 11 de maio 2016.

MongoDB. MongoDB Drivers and Client Libraries. 2016. Disponível em: < https://docs.mongodb.com/manual/applications/drivers/ >. Acesso em: 10 de junho 2016.

Oracle. O que é a Tecnologia Java e porque preciso dela? 2016. Disponível em: < https://www.java.com/pt_BR/download/faq/whatis_java.xml >. Acesso em: 10 de junho 2016.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s