Diseño de aplicaciones

Couchbase con Kotlin, Spring Boot y Spring Data

El año pasado empecé a aprender Kotlin y me sorprendió lo fácil que era convertir una aplicación Java. IntelliJ y algunos otros IDEs ofrecen buenas herramientas para la conversión automática, y con unos pocos ajustes puedes terminar con un código mucho más conciso y menos propenso a errores.

Así que decidí crear una aplicación de ejemplo para mostrar mi nueva combinación favorita: Kotlin, Spring Boot, Spring Data y Couchbase:

Creación de un servicio de perfil de usuario

Puede clonar el proyecto completo aquí:

https://github.com/couchbaselabs/try-cb-kotlin

Empecemos por crear nuestra clase principal:

 Nota: Su clase debe ser abra de lo contrario se producirá el siguiente error:

Aquí está nuestra entidad de Usuario, es muy similar a el de Java:

  • @Documento: Anotación de Couchbase que define una entidad, similar a @Entidad en JPA. Couchbase añadirá automáticamente una propiedad llamada Clase en el documento para utilizarlo como tipo de documento.
  • @Id: La clave del documento
  • @Campo: Las anotaciones de Couchbase, similares a las de JPA @Columna. No es obligatorio, pero recomendamos su uso.

Mapear atributos en Couchbase es realmente sencillo. Serán mapeados directamente a la estructura correspondiente en JSON:

  • Propiedades simples: Asignación directa a JSON:

  • Matrices: Como era de esperar, las matrices como securityRoles se convertirán en matrices JSON: 

 

  • Entidades anidadas: ¿Odias mapear @ManyToOne ¿relaciones? A mí también. Como estamos utilizando una base de datos de documentos, ya no es necesario escribir estas relaciones, las entidades anidadas también se traducen directamente a JSON.

Repositorios

Ahora, echemos un vistazo al aspecto que tendrá nuestro repositorio:

 

  • @N1qlPrimaryIndexed: Este anotación asegura que el bucket asociado al repositorio actual tendrá un índice primario N1QL
  • @ViewIndexed:  Este anotación le permite definir el nombre del documento de diseño y el nombre de la vista, así como una función de mapa y reducción personalizada.

Como puede ver a continuación, puede aprovechar todos los Palabras clave de Spring Data para consultar la base de datos, como BuscarEnEntreEsMayorQueComo, Existeetc.

El repositorio está ampliando CouchbasePagingAndSortingRepositoryque le permite paginar sus consultas simplemente añadiendo un icono Pageable al final de la definición del método. Si necesitas escribir consultas más potentes, también puedes utilizar N1QL:

Las consultas anteriores tienen algunos azúcares sintácticos para hacerlas más pequeñas:

  • #(#n1ql.bucket): Utilice esta sintaxis para evitar introducir el nombre del cubo en la consulta
  • #{#n1ql.selectEntity}: sintaxis-azúcar a SELECT * FROM #(#n1ql.bucket):
  • #{#n1ql.filter}: sintaxis-azúcar para filtrar el documento por tipo, técnicamente significa class = 'miPaquete.MiNombreDeClase' (Clase es el atributo que se añade automáticamente al documento para definir su tipo cuando se trabaja con Couchbase en Spring Data )
  • #{#n1ql.fields} se sustituirá por la lista de campos (por ejemplo, para una cláusula SELECT) necesarios para reconstruir la entidad.
  • #{#n1ql.delete} se sustituirá por la sentencia delete from.
  • #{#n1ql.returning} se sustituirá por la cláusula de retorno necesaria para reconstruir la entidad.

Servicios

Nuestro servicio básicamente reenvía peticiones a nuestro repositorio, pero si necesitas escribir consultas ad-hoc, este es el lugar adecuado:

Controladores

Por último, vamos a añadir también un controlador para probar nuestros servicios a través de rest:

Escribir pruebas de integración con Kotlin

Para ejecutar correctamente las pruebas de integración, no olvide configurar las credenciales de su base de datos en el campo aplicación.propiedades file:

Aquí puede ver el aspecto de nuestras pruebas:

Dependencias de Kotlin y Maven

Kotlin se mueve rápidamente, así que ten en cuenta utilizar las versiones más recientes de cada dependencia:

Puede ver toda la pom.xml aquí.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Denis Rosa, Defensor del Desarrollador, Couchbase

Denis Rosa es un Developer Advocate para Couchbase y vive en Munich - Alemania. Tiene una sólida experiencia como ingeniero de software y habla con fluidez Java, Python, Scala y Javascript. A Denis le gusta escribir sobre búsqueda, Big Data, AI, Microservicios y todo lo que pueda ayudar a los desarrolladores a hacer una aplicación hermosa, más rápida, estable y escalable.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.