Integration with Spring Data Cassandra (Configuration and Usage)
Spring Data Cassandra is a full-featured Spring Data breakthrough association provider for Apache Cassandra. It can easily manage CRUD operations on Cassandra databases, simplifying development, testing, and deployment.
1. Dependency Addition
To start using Spring Data Cassandra, you need to add the dependency in your pom.xml or build.gradle:
org.springframework.boot
spring-boot-starter-data-cassandra
// build.gradle
implementation 'org.springframework.boot:spring-boot-starter-data-cassandra'
2. Cassandra Configuration
Configuration in Spring Data Cassandra is very important. You need to add the following configuration in application.properties or application.yml:
# application.properties
spring.data.cassandra.keyspace-name=KeyspaceName
spring.data.cassandra.contact-points=http://localhost:9042
# application.yml
spring:
data:
cassandra:
keyspace-name: KeyspaceName
contact-points: http://localhost:9042
3. Cassandra Models
Spring Data Cassandra supports two models for Cassandra: CQL and Query. You can use @DataEntity to define CQL models, and use @Query to define Query models.
// User.java (CQL Model)
@Entity
@Table(name = "users")
public class User {
@Column(name = "name")
private String name;
// getters and setters
}
// UserRepository.java (Query Model)
@Repository
public interface UserRepository extends JpaRepository {
@Query("SELECT * FROM users WHERE name = ?1")
User findByName(String name);
}
4. Cassandra CRUD Operations
Spring Data Cassandra provides multiple ways to perform CRUD operations. You can use @DataJpaTest to create a test Cassandra database and use CassandraTemplate to execute CRUD operations.
// UserTest.java
@DataJpaTest
public class UserTest {
@Autowired
private UserRepository userRepository;
public void testCreate() {
User user = new User("John Doe");
userRepository.save(user);
}
public void testRead() {
User user = userRepository.findById(1L).orElse(null);
System.out.println(user.getName());
}
}
// CassandraTemplateTest.java
@RunWith(SpringRunner.class)
public class CassandraTemplateTest {
@Autowired
private CassandraTemplate cassandraTemplate;
public void testInsert() {
List users = Arrays.asList(new User("John Doe"), new User("Jane Doe"));
cassandraTemplate.saveAll(users);
}
public void testDelete() {
cassandraTemplate.deleteAll(User.class);
}
}
5. Best Practices
When using Spring Data Cassandra, follow these best practices:
- Use
@DataEntityto define CQL models. - Use
@Queryto define Query models. - Use
CassandraTemplateto execute CRUD operations. - Use
DataJpaTestto create a test Cassandra database.
These best practices will help you easily manage Cassandra databases and simplify the development, testing, and deployment process.