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

Метод Spring Data – CrudRepository save()

Узнайте, как сохранять и обновлять сущности в базе данных с помощью Spring Data CrudRepository.

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

1. Обзор

CrudRepository – это интерфейс данных Spring для общих операций CRUD в репозитории определенного типа. Он предоставляет несколько методов из коробки для взаимодействия с базой данных.

В этом уроке мы объясним, как и когда использовать метод CrudRepository |/save () .

Чтобы узнать больше о хранилищах данных Spring, взгляните на нашу статью , которая сравнивает CrudRepository с другими интерфейсами репозиториев фреймворка.

Дальнейшее чтение:

Весенние данные JPA @Query

Spring Data JPA – Производные методы удаления

2. Зависимости

Нам придется добавить Spring Data и H2 зависимости от базы данных в ваш pom.xml файл:


    org.springframework.boot
    spring-boot-starter-data-jpa


    com.h2database
    h2
    runtime

3. Пример применения

Давайте сначала создадим нашу весеннюю сущность данных под названием Merchandise Entity . Этот класс будет определять типы данных, которые будут сохраняться в базе данных при вызове метода save() :

@Entity
public class MerchandiseEntity {
 
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private double price;

    private String brand;

    public MerchandiseEntity() {
    }

    public MerchandiseEntity(String brand, double price) {
        this.brand = brand;
        this.price = price;
    }
}

Далее, давайте создадим интерфейс CrudRepository для работы с объектом Merchandise :

@Repository
public interface InventoryRepository 
  extends CrudRepository {
}

Здесь мы указываем класс сущности и класс идентификатора сущности, Товарная сущность и Длинная . Когда экземпляр этого репозитория будет создан, базовая логика будет автоматически создана для работы с нашим классом MerchandiseEntity .

Таким образом, с очень небольшим количеством кода мы уже готовы начать использовать метод save () .

4. CrudRepository save() для добавления нового экземпляра

Давайте создадим новый экземпляр Merchandise Entity и сохраним его в базе данных с помощью репозитория Inventory :

InventoryRepository repo = context
  .getBean(InventoryRepository.class);

MerchandiseEntity pants = new MerchandiseEntity(
  "Pair of Pants", BigDecimal.ONE);
pants = repo.save(pants);

При выполнении этого действия будет создана новая запись в таблице базы данных для объекта Товар . Обратите внимание, что мы никогда не указывали id . Экземпляр изначально создается со значением null для его id , и когда мы вызываем метод save () , автоматически генерируется id .

Метод save() возвращает сохраненную сущность, включая обновленное поле id .

5. CrudRepository save() для обновления экземпляра

Мы можем использовать тот же метод save () для обновления существующей записи в нашей базе данных . Предположим, мы сохранили экземпляр Merchandise Entity с определенным названием:

MerchandiseEntity pants = new MerchandiseEntity(
  "Pair of Pants", 34.99);
pants = repo.save(pants);

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

Предполагая, что мы знаем id элемента ( ), мы можем использовать CrudRepository метод findById , чтобы получить нашу сущность из базы данных:

MerchandiseEntity pantsInDB = repo.findById(pantsId).get(); 
pantsInDB.setPrice(44.99); 
repo.save(pantsInDB);

Здесь мы обновили наш исходный объект с новой ценой и сохранили изменения обратно в базу данных.

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

В этой краткой статье мы рассмотрели использование метода CrudRepository save (). Этот метод можно использовать для добавления новой записи в базу данных, а также для обновления существующей.

Как обычно, код статьи находится на GitHub .