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

Данные Spring - CrudRepository метод save ()

1. обзор

CrudRepository - этоSpring Data interface for generic CRUD operations on a repository of a specific type.. Он предоставляет несколько готовых методов для взаимодействия с базой данных.

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

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

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

Spring Data JPA @Query

Узнайте, как использовать аннотацию @Query в Spring Data JPA для определения пользовательских запросов с использованием JPQL и собственного SQL.

Read more

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

Узнайте, как определить методы Spring Data deleteBy и removeBy

Read more

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

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


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


    com.h2database
    h2
    runtime

3. Пример приложения

Давайте сначала создадим наш объект Spring Data с именемMerchandiseEntity. Этот класс будет методомdefine the data types that will get persisted to the database when we call the 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 для работы сMerchandiseEntity:

@Repository
public interface InventoryRepository
  extends CrudRepository {
}

Here we specify the entity’s class and the entity id’s class, MerchandiseEntity and Long. Когда создается экземпляр этого репозитория, базовая логика автоматически становится доступной для работы с нашим классомMerchandiseEntity.

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

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

Давайте создадим новый экземплярMerchandiseEntity и сохраним его в базе данных, используяInventoryRepository:

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

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

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

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

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

Мы можем использовать тот же метод save ()to update an existing entry in our database. Предположим, мы сохранили экземплярMerchandiseEntity с определенным заголовком:

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

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

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

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

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

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

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

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