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

Руководство по значению ключа данных Spring

Узнайте, как использовать Spring Data Key Value для взаимодействия с хранилищами key-value

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

1. введение

Платформа Spring Data Key Value framework позволяет легко писать приложения Spring, использующие хранилища ключей-значений.

Это сводит к минимуму избыточные задачи и шаблонный код, необходимый для взаимодействия с магазином. Фреймворк хорошо работает для магазинов ключевых ценностей, таких как Redis и Riak.

В этом уроке мы рассмотрим, как использовать значение ключа Spring Data Key со значением по умолчанию java.util.Реализация на основе Map .

2. Требования

Двоичные файлы Spring Data Key Value 1.x требуют уровня JDK 6.0 или выше и Spring Framework 3.0.x или выше.

3. Зависимость Maven

Для работы со значением ключа Spring Data нам нужно добавить следующую зависимость:


    org.springframework.data
    spring-data-keyvalue
    2.0.6.RELEASE

Последнюю версию можно найти здесь .

4. Создание сущности

Давайте создадим сущность Employee :

@KeySpace("employees")
public class Employee {

    @Id
    private Integer id;

    private String name;

    private String department;

    private String salary;

    // constructors/ standard getters and setters

}

Keyspaces определяет, в какой части структуры данных должна храниться сущность. Эта концепция очень похожа на коллекции в MongoDB и Elasticsearch, ядра в Solr и таблицы в JPA.

По умолчанию ключевое пространство сущности извлекается из ее типа.

5. Хранилище

Подобно другим фреймворкам Spring Data framework, нам нужно будет активировать репозитории Spring Data с помощью @EnableMapRepositories аннотации .

По умолчанию репозитории будут использовать реализацию на основе ConcurrentHashMap- :

@SpringBootApplication
@EnableMapRepositories
public class SpringDataKeyValueApplication {
}

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

@EnableMapRepositories(mapType = WeakHashMap.class)

Создание репозиториев со значением ключа Spring Data работает так же, как и с другими фреймворками Spring Data:

@Repository
public interface EmployeeRepository
  extends CrudRepository {
}

Чтобы узнать больше о хранилищах данных Spring, мы можем ознакомиться с этой статьей .

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

Расширяя CrudRepository в EmployeeRepository , мы получаем полный набор методов персистентности, которые выполняют функциональность CRUD.

Теперь мы посмотрим, как мы можем использовать некоторые из доступных методов сохранения.

6.1. Сохранение объекта

Давайте сохраним новый объект Employee в хранилище данных с помощью репозитория:

Employee employee = new Employee(1, "Mike", "IT", "5000");
employeeRepository.save(employee);

6.2. Извлечение существующего объекта

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

Optional savedEmployee = employeeRepository.findById(1);

6.3. Обновление существующего объекта

CrudRepository не предоставляет специального метода для обновления объекта.

Вместо этого мы можем использовать метод save() :

employee.setName("Jack");
employeeRepository.save(employee);

6.4. Удаление существующего объекта

Мы можем удалить вставленный объект с помощью репозитория:

employeeRepository.deleteById(1);

6.5. Извлечение Всех Объектов

Мы можем получить все сохраненные объекты:

Iterable employees = employeeRepository.findAll();

7. Шаблон Ключевого значения

Другой способ выполнения операций над структурой данных-использование шаблона Key Value .

В самых простых терминах шаблон Key Value использует MapAdapter wrapping a java.util.Map реализация для выполнения запросов и сортировки:

@Bean
public KeyValueOperations keyValueTemplate() {
    return new KeyValueTemplate(keyValueAdapter());
}

@Bean
public KeyValueAdapter keyValueAdapter() {
    return new MapKeyValueAdapter(WeakHashMap.class);
}

Обратите внимание, что в случае, если мы использовали @EnableMapRepositories , нам не нужно указывать Шаблон Ключевого значения. Он будет создан самим фреймворком.

8. Использование Шаблона Ключевого Значения

Используя шаблон Key Value , мы можем выполнять те же операции, что и с репозиторием.

8.1. Сохранение объекта

Давайте посмотрим, как сохранить новый объект Employee в хранилище данных с помощью шаблона:

Employee employee = new Employee(1, "Mile", "IT", "5000");
keyValueTemplate.insert(employee);

8.2. Извлечение существующего объекта

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

Optional savedEmployee = keyValueTemplate
  .findById(id, Employee.class);

8.3. Обновление существующего объекта

В отличие от CrudRepository , шаблон предоставляет специальный метод для обновления объекта:

employee.setName("Jacek");
keyValueTemplate.update(employee);

8.4. Удаление существующего объекта

Мы можем удалить объект с помощью шаблона:

keyValueTemplate.delete(id, Employee.class);

8.5. Извлечение Всех Объектов

Мы можем извлечь все сохраненные объекты с помощью шаблона:

Iterable employees = keyValueTemplate
  .findAll(Employee.class);

8.6. Сортировка объектов

В дополнение к базовому функционалу, шаблон также поддерживает Key Value Query для написания пользовательских запросов.

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

KeyValueQuery query = new KeyValueQuery();
query.setSort(new Sort(Sort.Direction.DESC, "salary"));
Iterable employees 
  = keyValueTemplate.find(query, Employee.class);

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

В этой статье показано, как мы можем использовать Spring Data KeyValue framework с реализацией карты по умолчанию с помощью Repository или KeyValueTemplate .

Есть еще фреймворки Spring Data, такие как Spring Data Redis, которые записываются поверх значения ключа Spring Data. См. эту статью для ознакомления с Spring Data Redis.

И, как всегда, все примеры кода, показанные здесь, доступны на GitHub .