Использование 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")); ListbookList = 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
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 основе проекта, поэтому она должна быть легко импортировать и работать, как она есть.