Cassandra es un sistema de gestión de bases de datos distribuidas de código abierto diseñado para procesar grandes volúmenes de datos en múltiples servidores típicos. Además, Spring Boot proporciona configuración automática para Cassandra y abstracciones proporcionadas a través de Spring Data Cassandra. Para una recopilación conveniente de dependencias, existe un spring-boot-starter-data-cassandra de “inicio”.

Conectando con Casandra

Puedes implementar una instancia CassandraTemplate o CqlSession configurada automáticamente desde Cassandra como cualquier otro Spring Bean. Las propiedades spring.data.cassandra.* se pueden utilizar para configurar la conexión. Normalmente, se especifican keyspace-name y contact-points, así como el nombre del centro de datos local, como se muestra en el siguiente ejemplo:

Propiedades
spring.data.cassandra.keyspace-name=mykeyspace
spring.data.cassandra.contact-points=cassandrahost1:9042,cassandrahost2:9042
spring.data.cassandra.local-datacenter=centro de datos1
Yaml
spring:
  data:
    cassandra:
      keyspace-name: "mykeyspace"
      contact-points: "cassandrahost1:9042,cassandrahost2:9042"
      local-datacenter: "datacenter1"

Si el puerto es el mismo para todos los puntos de contacto, puede utilizar un acceso directo y especificar solo los nombres de host, como se muestra en el siguiente ejemplo:

Propiedades
spring.data.cassandra.keyspace-name=mykeyspace
spring.data.cassandra.contact-points=cassandrahost1,cassandrahost2
spring.data.cassandra.local-datacenter=centro de datos1
Yaml
spring:
  data:
    cassandra:
      keyspace-name: "mykeyspace"
      contact-points: "cassandrahost1,cassandrahost2"
      local-datacenter: "datacenter1"
Estos dos ejemplos son idénticos porque el puerto predeterminado es 9042. Si necesita configurar el puerto, utilice spring.data.cassandra.port.

El controlador Cassandra tiene su propio marco de configuración que carga application.conf en la ruta de clase raíz.

Spring Boot no busca dicho archivo de forma predeterminada, pero puede cargarlo usando spring.data.cassandra.config. Si una propiedad está presente tanto en spring.data.cassandra.* como en el archivo de configuración, el valor en spring.data.cassandra.* tiene un nivel de precedencia más alto.

Para una personalización más profunda del controlador, puede registrar una cantidad arbitraria de beans que implementen DriverConfigLoaderBuilderCustomizer. CqlSession se puede personalizar utilizando un bean como CqlSessionBuilderCustomizer.

Si está utilizando CqlSessionBuilder para crear varios beans CqlSession, tenga en cuenta que el constructor es mutable. Por lo tanto, , debe asegurarse de implementar una nueva copia para cada sesión.

La siguiente lista de código muestra cómo implementar un bean Cassandra:

Java
import org.springframework.data.cassandra.core.CassandraTemplate;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
    private final CassandraTemplate template;
    public MyBean(CassandraTemplate template) {
        this.template = template;
    }
 // ...
 public long someMethod() {
        return this.template.count(User.class);
    }
}
Kotlin
import org.springframework.data.cassandra.core.CassandraTemplate
import org.springframework.stereotype.Component
@Component
class MyBean(private val template: CassandraTemplate) {
 // ...
 fun someMethod(): Long {
        return template.count(User::class.java)
    }
}

Si agrega su propio bean CassandraTemplate marcado con la anotación @Bean, reemplazará la plantilla predeterminada.

Repositorios de datos de primavera Cassandra

Spring Data contiene soporte de repositorio para Cassandra. Actualmente son más limitados que el soporte de repositorio similar para JPA discutido anteriormente y requieren que los métodos de búsqueda estén anotados con la anotación @Query.