Usar Java com o Couchbase não precisa ser difícil, mesmo para um novo desenvolvedor.
Neste tutorial de início rápido, abordaremos os conceitos básicos de criação e obtenção de documentos JSON no Couchbase usando o Java SDK. Com amostras de código minimalistas, você pode conectar e testar seu aplicativo imediatamente.
Configurar um aplicativo Java básico
Antes de começar, verifique se você tem a versão mais recente do Couchbase instaladajuntamente com o balde de amostras de viagem.
Naturalmente, também precisamos de um ambiente básico de desenvolvimento Java. Para configurar um ambiente de desenvolvimento em um novo computador, considere usar o comando Pacote de codificação para Java da Microsoft.
Esse pacote é útil porque ajuda a instalar o JDK junto com as extensões de suporte para o ambiente do Visual Studio Code. Usei o OpenJDK 11 para minha configuração e o defini como meu principal JAVA_HOME
depois que fiz o download com a GUI deles.
A página de introdução às ferramentas Java foi útil para criar um novo projeto, selecionar as ferramentas de compilação Maven e especificar uma pasta de projeto. Selecionei todos os valores padrão e o projeto Maven foi criado automaticamente na pasta PROJETOS JAVA
explorador de arquivos e chamado demo.
Abra o demo -> src/main/java -> com.example -> App
arquivo.
Execute uma compilação de teste para garantir que o Java esteja configurado corretamente, usando o botão Play na parte superior direita do editor. A janela do terminal de saída deve ser exibida:
Olá mundo!
Isso confirma que o Java está sendo executado corretamente e que seu ambiente está pronto para funcionar.
Dependência do cliente java do Couchbase para Maven
Adicionar o Couchbase cliente java
dependência de com.couchbase.client
versão 3.1.6 como uma dependência do Maven no pom.xml
arquivo.
Se estiver usando uma GUI para fazer isso, tenha cuidado para obter cliente java
e não cliente couchbase
bibliotecas.
1 2 3 |
com.couchbase.cliente java-cliente 3.1.6 |
A adição de importações do Couchbase Java SDK (no exemplo de código abaixo) habilita as classes de conexão de cluster para seu projeto. Adicionaremos mais ao longo deste exercício, mas fique à vontade para pular para o exemplo de código completo no final da postagem.
1 |
importação com.couchbase.cliente.java.*; |
Adicione uma string de conexão básica do cluster ao principal()
como você vê no exemplo abaixo. Os parâmetros de conexão incluem o endereço IP ou o nome de um nó no cluster do Couchbase, juntamente com o nome de usuário/senha. Observe que usei meu login de administrador principal aqui para simplificar, pois ele tem permissões completas.
1 2 3 4 5 |
público estático vazio principal( Cordas[] argumentos ) { Sistema.fora.println( "Hello World!" ); Aglomerado agrupamento = Aglomerado.conectar("192.168.0.158","Administrador","Administrador"); } |
Quando tiver inserido as informações de conexão, execute outra compilação de teste e a saída deverá mostrar que um nó foi conectado:
1 |
INFORMAÇÕES: [com.couchbase.nó][NodeConnectedEvent] Nó conectado {"coreId":"0x9bb7352900000001","managerPort":"8091","remoto":"192.168.0.158/"} |
Obter um documento
Se você chegou até aqui, já está mais do que na metade do caminho!
Em seguida, solicitaremos um documento específico usando seu ID. Os IDs de documentos são nomes exclusivos para cada documento no bucket ou na coleção de documentos em um bucket.
O balde de amostras para viagem que vem com Couchbase inclui companhias aéreas, hotéis e muito mais - tudo para que você possa testar seu código com dados reais.
A imagem abaixo mostra como você pode procurar documentos disponíveis em um bucket usando o console da Web.
Para acessar documentos no banco de dados, precisamos de mais algumas classes que interajam com operações de valor-chave, como obter e definir documentos.
Veja como você adiciona a importação para operações de valor-chave:
1 |
importação com.couchbase.cliente.java.kv.ObterResultado; |
Em seguida, você precisa definir uma coleção e um bucket para se conectar e fornecer um ID de documento para buscar:
1 2 3 4 5 6 |
Balde balde = agrupamento.balde("amostra de viagem"); Coleção coleção = balde.defaultCollection(); // Obter um documento ObterResultado getResult = coleção.obter("airline_10"); Sistema.fora.println(getResult); |
Os escopos e as coleções são usados para agrupar tipos semelhantes de documentos para diferentes aplicativos. Neste exemplo, usamos apenas os padrões que incluem tudo.
Se quiser, seja mais preciso. Por exemplo, você pode imprimir apenas o nome do documento:
1 2 |
Cordas nome = getResult.contentAsObject().getString("name" (nome)); Sistema.fora.println(nome); |
Execute esse código e a saída mostrará o JSON bruto do documento, além da cadeia de caracteres acima extraída do campo name:
1 2 3 |
{"país":"Estados Unidos","iata":"Q5","name" (nome):"40 milhas aéreas","indicativo":"MILE-AIR","icao":"MLA","id":10,"tipo":"companhia aérea"} 40-Milha Ar |
Isso é tudo o que é necessário para buscar um documento específico. Parabéns se você chegou até aqui!
Criar ou inserir um documento
Criar um documento não é muito mais difícil do que buscar um.
Certifique-se de que as configurações do usuário permitam criar novos documentos no bucket fornecido. Em seguida, adicionaremos algumas importações e criaremos um documento JSON simples que enviaremos/inseriremos/atualizaremos/inseriremos no banco de dados.
Embora não façamos nada sofisticado com o rastreamento de versões de documentos ou mutações relacionadas, o SDK retorna o status da operação para que possamos usá-lo posteriormente. Veja a seguir como adicionar mais algumas importações para lidar com a atualização de documentos e criar objetos JSON:
1 2 |
importação com.couchbase.cliente.java.kv.Resultado da mutação; importação com.couchbase.cliente.java.json.*; |
Em seguida, adicionamos o código para criar um documento básico, incluindo qualquer campo que você queira no documento JSON:
1 2 3 4 5 6 |
Resultado da mutação upsertResult = coleção.upsert( "airbnb_1", JsonObject.criar().colocar("name" (nome), "AirBnB do Tyler") .colocar("país", "Canadá") .colocar("tipo", "hotel") ); |
Observe que é fornecida uma ID (airbnb_1
) e, em seguida, o documento JSON é formado e enviado ao banco de dados (upsert
), tudo em um único comando. Observe que o ID em si não faz parte do JSON, mas é uma cadeia de caracteres passada para a função.
Um upsert criará um novo documento, se não houver nenhum, ou atualizará qualquer documento existente com o mesmo ID.
Agora vamos alterar a busca do documento original para obter o novo documento que acabamos de criar:
1 |
ObterResultado getResult = coleção.obter("airbnb_1"); |
O registro do terminal deve imprimir o objeto de resultado bruto e, em seguida, o nome do nosso novo documento:
1 2 |
ObterResultado{conteúdo={"name" (nome):"AirBnB do Tyler","tipo":"hotel","país":"Canadá"}, bandeiras=0x2000000, cas=0x16917e1447b40000, expiração=Opcional.vazio} Tyler's AirBnB |
E é isso!
Próximas etapas
Este simples tutorial deve ajudá-lo a começar a usar o Couchbase Java SDK rapidamente. As próximas postagens desta série examinarão outros serviços, como Query e Full-Text Search.
Para obter mais informações, consulte a documentação do Couchbase Java SDK que aborda conceitos semelhantes.
Exemplo completo de código de cliente do Couchbase
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
pacote com.exemplo; importação com.couchbase.cliente.java.*; importação com.couchbase.cliente.java.kv.ObterResultado; importação com.couchbase.cliente.java.kv.Resultado da mutação; importação com.couchbase.cliente.java.json.*; público classe Aplicativo { público estático vazio principal( Cordas[] argumentos ) { Sistema.fora.println( "Hello World!" ); Aglomerado agrupamento = Aglomerado.conectar("192.168.0.158","Administrador","Administrador"); Balde balde = agrupamento.balde("amostra de viagem"); Coleção coleção = balde.defaultCollection(); Resultado da mutação upsertResult = coleção.upsert( "airbnb_1", JsonObject.criar().colocar("name" (nome), "AirBnB do Tyler") .colocar("país", "Canadá") .colocar("tipo", "hotel") ); // Obter um documento //GetResult getResult = collection.get("airline_10"); ObterResultado getResult = coleção.obter("airbnb_1"); Sistema.fora.println(getResult); // Imprimir campo específico nos resultados do documento Cordas nome = getResult.contentAsObject().getString("name" (nome)); Sistema.fora.println(nome); } } |