Рубрики
Без рубрики

Использование CassandraTemplate из весенних данных

Праймер по использованию CassandraTemplate Spring Data Cassandra для выполнения основных запросов с помощью QueryBuilder и C’L.

Автор оригинала: baeldung.

Использование CassandraTemplate из весенних данных

1. Обзор

Это вторая статья серии статей Spring Data Cassandra. В этой статье мы сосредоточимся в основном на КассандраТемплет и запросы на C’L в слое доступа к данным. Вы можете прочитать больше о весенних данных Кассандра в первая статья в серии .

Язык запросов Cassandra —язык запросов для базы данных Cassandra и CqlTemplate является шаблоном доступа к данным низкого уровня в Spring Data Cassandra – он удобно предоставляет операции, связанные с манипулированием данными, для выполнения операторов C’L.

КассандраТемпл строится на вершине низкого уровня CqlTemplate и предоставляет простой способ запроса объектов домена и карты объектов на сохраняемую структуру данных в Cassandra.

Начнем с конфигурации, а затем рассмотрим примеры использования двух шаблонов.

2. Конфигурация CassandraTemplate

КассандраТемпл доступен в контексте весны, потому что наша главная кассандра Весна config расширяет AbstractCassandraConfiguration:

@Configuration
@EnableCassandraRepositories(basePackages = "com.baeldung.spring.data.cassandra.repository")
public class CassandraConfig extends AbstractCassandraConfiguration { ... }

Затем мы можем простой провод в шаблоне – либо по своему точному типу, CassandraTemplate, или как более общий КассандраОперации:

@Autowired
private CassandraOperations cassandraTemplate;

3. Доступ к данным с помощью CassandraTemplate

Давайте использовать КассандраТемпл определено выше в нашем модуле уровня доступа к данным для работы с постоянными данными.

3.1. Сохранение новой книги

Мы можем сохранить новую книгу в нашем книжном магазине:

Book javaBook = new Book(
  UUIDs.timeBased(), "Head First Java", "O'Reilly Media",
  ImmutableSet.of("Computer", "Software"));
cassandraTemplate.insert(javaBook);

Затем мы можем проверить наличие вставленной книги в базу данных:

Select select = QueryBuilder.select().from("book")
  .where(QueryBuilder.eq("title", "Head First Java"))
  .and(QueryBuilder.eq("publisher", "O'Reilly Media"));
Book retrievedBook = cassandraTemplate.selectOne(select, Book.class);

Мы используем Выберите данный здесь, чтобы быть отображены на selectOne () в кассандраТемпл . Мы обсудим ЗапросСтроитель более подробно в разделе запросов C’L.

3.2. Сохранение нескольких книг

Мы можем сохранить несколько книг в нашем книжном магазине одновременно, используя список:

Book javaBook = new Book(
  UUIDs.timeBased(), "Head First Java", "O'Reilly Media",
  ImmutableSet.of("Computer", "Software"));
Book dPatternBook = new Book(
  UUIDs.timeBased(), "Head Design Patterns", "O'Reilly Media",
  ImmutableSet.of("Computer", "Software"));
List bookList = new ArrayList();
bookList.add(javaBook);
bookList.add(dPatternBook);
cassandraTemplate.insert(bookList);

3.3. Обновление существующей книги

Lat’s начать с вставки новой книги:

Book javaBook = new Book(
  UUIDs.timeBased(), "Head First Java", "O'Reilly Media",
  ImmutableSet.of("Computer", "Software"));
cassandraTemplate.insert(javaBook);

Давайте возьмем книгу:

Select select = QueryBuilder.select().from("book");
Book retrievedBook = cassandraTemplate.selectOne(select, Book.class);

Затем давайте добавим некоторые дополнительные теги к извлеченной книге:

retrievedBook.setTags(ImmutableSet.of("Java", "Programming"));
cassandraTemplate.update(retrievedBook);

3.4. Удаление вставленной книги

Давайте вставить новую книгу:

Book javaBook = new Book(
  UUIDs.timeBased(), "Head First Java", "O'Reilly Media",
  ImmutableSet.of("Computer", "Software"));
cassandraTemplate.insert(javaBook);

Затем удалите книгу:

cassandraTemplate.delete(javaBook);

3.5. Удаление всех книг

Давайте теперь вставить несколько новых книг:

Book javaBook = new Book(
  UUIDs.timeBased(), "Head First Java", "O'Reilly Media",
  ImmutableSet.of("Computer", "Software"));
Book dPatternBook = new Book(
  UUIDs.timeBased(), "Head Design Patterns", "O'Reilly Media", 
  ImmutableSet.of("Computer", "Software"));
cassandraTemplate.insert(javaBook);
cassandraTemplate.insert(dPatternBook);

Затем удалите все книги:

cassandraTemplate.deleteAll(Book.class);

4. Доступ к данным с помощью запросов C’L

Для манипулирования данными в слое доступа к данным всегда можно использовать запросы C’L. Передача запроса на C’L выполняется CqlTemplate класса, что позволяет нам выполнять пользовательские запросы по мере необходимости.

Однако, как КассандраТемпл класс является продолжением CqlTemplate , мы можем использовать его непосредственно для выполнения этих запросов.

Давайте рассмотрим различные методы, которые мы можем использовать для управления данными с помощью запросов C’L.

4.1. Использование запросстроителя

ЗапросСтроитель может быть использован для создания запроса для обработки данных в базе данных. Почти все стандартные манипуляции могут быть созданы с использованием из коробки строительных блоков:

Insert insertQueryBuider = QueryBuilder.insertInto("book")
 .value("isbn", UUIDs.timeBased())
 .value("title", "Head First Java")
 .value("publisher", "OReilly Media")
 .value("tags", ImmutableSet.of("Software"));
cassandraTemplate.execute(insertQueryBuider);

Если вы внимательно посмотрите на фрагмент кода, вы можете заметить, что выполнить () метод используется вместо соответствующего типа операции (вставка, удаление и т.д.). Это связано с тем, что тип запроса определяется выходом ЗапросСтроитель.

4.2. Использование подготовленныхгосударства

Даже несмотря на то, ПодготовленоГосударства может быть использован в любом случае, этот механизм обычно рекомендуется для нескольких вставок для высокоскоростного приема внутрь.

ПодготовленоГосударственное готовится только один раз, помогая обеспечить высокую производительность:

UUID uuid = UUIDs.timeBased();
String insertPreparedCql = 
  "insert into book (isbn, title, publisher, tags) values (?, ?, ?, ?)";
List singleBookArgsList = new ArrayList<>();
List> bookList = new ArrayList<>();
singleBookArgsList.add(uuid);
singleBookArgsList.add("Head First Java");
singleBookArgsList.add("OReilly Media");
singleBookArgsList.add(ImmutableSet.of("Software"));
bookList.add(singleBookArgsList);
cassandraTemplate.ingest(insertPreparedCql, bookList);

4.3. Использование заявлений КЗЛ

Мы можем напрямую использовать операторы C’L для запроса данных следующим образом:

UUID uuid = UUIDs.timeBased();
String insertCql = "insert into book (isbn, title, publisher, tags) 
  values (" + uuid + ", 'Head First Java', 'OReilly Media', {'Software'})";
cassandraTemplate.execute(insertCql);

5. Заключение

В этой статье мы изучили различные стратегии манипулирования данными с использованием Spring Data Cassandra, включая КассандраТемпл и запросы на C’L.

Реализация вышеуказанных фрагментов и примеров кода можно найти в мой проект GitHub – это Maven основе проекта, поэтому она должна быть легко импортировать и работать, как она есть.