Usar Java con Couchbase no tiene por qué ser difícil, incluso para un nuevo desarrollador.
En este tutorial de inicio rápido, vamos a recorrer los conceptos básicos de la creación y obtención de documentos JSON en Couchbase utilizando el SDK de Java. Con ejemplos de código minimalistas, podrá conectar y probar su aplicación de inmediato.
Configurar una aplicación Java básica
Antes de empezar, asegúrese de tener la versión más reciente de Couchbase instaladajunto con el cubo de muestras de viaje.
Naturalmente, también necesitamos un entorno de desarrollo Java básico. Para configurar un entorno de desarrollo en un ordenador nuevo, considere la posibilidad de utilizar el comando Paquete de codificación para Java de Microsoft.
Este paquete es útil porque ayuda a instalar el JDK junto con las extensiones de soporte para el entorno Visual Studio Code. He utilizado OpenJDK 11 para mi configuración y establecerlo como mi principal JAVA_HOME
una vez que lo descargué con su GUI.
La página de inicio de Java Tools fue útil para crear un nuevo proyecto, seleccionar Maven build tools y especificar una carpeta de proyecto. Selecciono todos los valores por defecto y el proyecto Maven se crea automáticamente bajo la carpeta PROYECTOS JAVA
explorador de archivos y llamado demo.
Abra el demo -> src/main/java -> com.example -> App
archivo.
Ejecute una compilación de prueba para asegurarse de que Java está configurado correctamente, utilizando el botón Reproducir situado en la parte superior derecha del editor. La ventana del terminal de salida debe mostrar:
Hola a todos.
Esto confirma que Java se está ejecutando correctamente y que su entorno está listo para funcionar.
Dependencia java-client de Couchbase para Maven
Añadir Couchbase java-client
dependencia de com.couchbase.client
versión 3.1.6 como dependencia de Maven en el archivo pom.xml
archivo.
Si utiliza una interfaz gráfica de usuario para hacer esto, tenga cuidado de obtener java-client
y no couchbase-client
bibliotecas.
1 2 3 |
com.couchbase.cliente java-cliente 3.1.6 |
Añadir importaciones del SDK Java de Couchbase (en el ejemplo de código de abajo) habilita las clases de conexión al cluster para tu proyecto. Añadiremos más a lo largo de este ejercicio, pero siéntete libre de saltar al ejemplo de código completo al final del post.
1 |
importar com.couchbase.cliente.java.*; |
Añade una cadena de conexión de clúster básica a main()
como se ve en el siguiente ejemplo. Los parámetros de conexión incluyen la dirección IP o el nombre de un nodo en el cluster de Couchbase junto con el nombre de usuario/contraseña. Ten en cuenta que aquí utilizo mi nombre de usuario de administrador principal por simplicidad, ya que tiene todos los permisos.
1 2 3 4 5 |
público estático void principal( Cadena[] args ) { Sistema.fuera.println( "¡Hola Mundo!" ); Grupo grupo = Grupo.conecte("192.168.0.158","Administrador","Administrador"); } |
Cuando haya introducido la información de conexión, ejecute otra compilación de prueba y la salida debería mostrar que se ha conectado un nodo:
1 |
INFO: [com.couchbase.nodo][NodoConectadoEvento] Nodo conectado {"coreId":"0x9bb7352900000001","managerPort":"8091","remoto":"192.168.0.158/"} |
Obtener un documento
Si has llegado hasta aquí, ¡has recorrido más de la mitad del camino!
A continuación, vamos a solicitar un documento específico utilizando su ID. Los ID de documento son nombres únicos para cada documento del bucket o colección de documentos de un bucket.
El cubo de muestras de viaje que viene con Couchbase incluye aerolíneas, hoteles, etc., para que pueda probar su código con datos reales.
La siguiente imagen muestra cómo puede examinar los documentos disponibles en un bucket utilizando la consola web.
Para acceder a los documentos de la base de datos, necesitamos algunas clases más que interactúen con operaciones clave-valor como obtener y establecer documentos.
Así es como se añade la importación para las operaciones clave-valor:
1 |
importar com.couchbase.cliente.java.kv.ObtenerResultado; |
A continuación, debe definir una colección y un bucket a los que conectarse y proporcionar un ID de documento que recuperar:
1 2 3 4 5 6 |
Cubo cubo = grupo.cubo("viaje-muestra"); Colección colección = cubo.defaultCollection(); // Obtener un documento ObtenerResultado obtenerResultado = colección.consiga("aerolínea_10"); Sistema.fuera.println(obtenerResultado); |
Los ámbitos y las colecciones se utilizan para agrupar tipos similares de documentos para diferentes aplicaciones. En este ejemplo, simplemente utilizamos los valores predeterminados que incluyen todo.
Sea más preciso si lo desea. Por ejemplo, puede imprimir sólo el nombre del documento:
1 2 |
Cadena nombre = obtenerResultado.contentAsObject().getString("nombre"); Sistema.fuera.println(nombre); |
Ejecute este código y la salida mostrará el JSON sin procesar del documento, más la cadena anterior tomada del campo nombre:
1 2 3 |
{"país":"Estados Unidos","iata":"Q5","nombre":"40-Mile Air","Indicativo":"MILE-AIR","icao":"MLA","id":10,"tipo":"aerolínea"} 40-Milla Aire |
Eso es todo lo que se necesita para buscar un documento específico. ¡Enhorabuena si has llegado hasta aquí!
Crear o volver a insertar un documento
Crear un documento no es mucho más difícil que buscarlo.
Asegúrese de que su configuración de usuario le permite crear nuevos documentos en el cubo dado. A continuación, añadiremos un par de importaciones y crearemos un documento JSON sencillo que enviaremos, insertaremos, actualizaremos o insertaremos en la base de datos.
Aunque no vamos a hacer nada del otro mundo con el seguimiento de versiones de documentos o mutaciones relacionadas, el SDK devuelve el estado de la operación para que lo utilicemos más adelante. He aquí cómo añadir un par de importaciones más para manejar la actualización de documentos y crear objetos JSON:
1 2 |
importar com.couchbase.cliente.java.kv.MutationResult; importar com.couchbase.cliente.java.json.*; |
A continuación, añadimos código para crear un documento básico, incluyendo cualquier campo que desee en el documento JSON:
1 2 3 4 5 6 |
MutationResult upsertResultado = colección.upsert( "airbnb_1", JsonObject.crear().poner("nombre", "AirBnB de Tyler") .poner("país", "Canada") .poner("tipo", "hotel") ); |
Tenga en cuenta que se proporciona un ID (airbnb_1
) y luego se forma el documento JSON y se envía a la base de datos (upsert
) en un solo comando. Tenga en cuenta que el propio ID no forma parte del JSON, sino que es una cadena que se pasa a la función.
Un upsert creará un nuevo documento si no existe ninguno, o actualizará los existentes con el mismo ID.
Ahora vamos a cambiar el documento original para obtener el nuevo documento que acabamos de crear:
1 |
ObtenerResultado obtenerResultado = colección.consiga("airbnb_1"); |
El registro de la terminal debería imprimir el objeto de resultado sin procesar y, a continuación, el nombre de nuestro nuevo documento:
1 2 |
ObtenerResultado{contenido={"nombre":"AirBnB de Tyler","tipo":"hotel","país":"Canada"}, banderas=0x2000000, cas=0x16917e1447b40000, caducidad=Opcional.vacío} Tyler's AirBnB |
¡Y ya está!
Próximos pasos
Este sencillo tutorial debería permitirte empezar a utilizar el SDK Java de Couchbase rápidamente. En futuros posts de esta serie examinaremos otros servicios como Query y Full-Text Search.
Para más información, revisa la documentación de Couchbase Java SDK que cubre conceptos similares.
Ejemplo de código completo del cliente 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 |
paquete com.ejemplo; importar com.couchbase.cliente.java.*; importar com.couchbase.cliente.java.kv.ObtenerResultado; importar com.couchbase.cliente.java.kv.MutationResult; importar com.couchbase.cliente.java.json.*; público clase Aplicación { público estático void principal( Cadena[] args ) { Sistema.fuera.println( "¡Hola Mundo!" ); Grupo grupo = Grupo.conecte("192.168.0.158","Administrador","Administrador"); Cubo cubo = grupo.cubo("viaje-muestra"); Colección colección = cubo.defaultCollection(); MutationResult upsertResultado = colección.upsert( "airbnb_1", JsonObject.crear().poner("nombre", "AirBnB de Tyler") .poner("país", "Canada") .poner("tipo", "hotel") ); // Obtener un documento //GetResult getResult = collection.get("aerolinea_10"); ObtenerResultado obtenerResultado = colección.consiga("airbnb_1"); Sistema.fuera.println(obtenerResultado); // Imprimir campo específico en los resultados del documento Cadena nombre = obtenerResultado.contentAsObject().getString("nombre"); Sistema.fuera.println(nombre); } } |