Dados da Primavera - Método CrudRepository save ()

Dados da Primavera - Método CrudRepository save ()

1. Visão geral

CrudRepository é umSpring Data interface for generic CRUD operations on a repository of a specific type. Ele fornece vários métodos prontos para usar para interagir com um banco de dados.

Neste tutorial, explicaremos como e quando usar o métodoCrudRepositorysave().

Para saber mais sobre os repositórios do Spring Data, dê uma olhada em nossoarticle que comparaCrudRepository com outras interfaces de repositório do framework.

Leitura adicional:

Dados da Primavera JPA @Query

Aprenda a usar a anotação @Query no Spring Data JPA para definir consultas personalizadas usando JPQL e SQL nativo.

Read more

Spring Data JPA - Métodos de Exclusão Derivados

Aprenda a definir os métodos deleteBy e removeBy dos Dados da Primavera

Read more

2. Dependências

Teremos que adicionar as dependências do banco de dadosSpring DataeH2 ao nosso arquivopom.xml:


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


    com.h2database
    h2
    runtime

3. Exemplo de aplicação

Vamos primeiro criar nossa entidade Spring Data chamadaMerchandiseEntity. Esta classe será o métododefine 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;
    }
}

A seguir, vamos criar uma interfaceCrudRepository para trabalhar comMerchandiseEntity:

@Repository
public interface InventoryRepository
  extends CrudRepository {
}

Here we specify the entity’s class and the entity id’s class, MerchandiseEntity and Long. Quando uma instância desse repositório é instanciada, a lógica subjacente será automaticamente implementada para trabalhar com nossa classeMerchandiseEntity.

Portanto, com muito pouco código, já estamos prontos para começar a usar o métodosave().

4. CrudRepository save () para adicionar uma nova instância

Vamos criar uma nova instância deMerchandiseEntity e salvá-la no banco de dados usandoInventoryRepository:

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

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

Executá-lo criará uma nova entrada na tabela do banco de dados paraMerchandiseEntity. Observe que nunca especificamos umid. A instância é inicialmente criada com um valornull para seuide quando chamamos o métodosave(), umid é gerado automaticamente.

O métodosave() retorna a entidade salva, incluindo o campoid atualizado.

5. CrudRepository save () para atualizar uma instância

Podemos usar o mesmo método save ()to update an existing entry in our database. Suponha que salvamos uma instânciaMerchandiseEntity com um título específico:

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

Mais tarde, descobrimos que queríamos atualizar o preço do item. Poderíamos então simplesmente obter a entidade do banco de dados, fazer a alteração e usar o métodosave() como antes.

Assumindo que sabemos oid do item (pantsId), podemos usar o métodoCRUDRepositoryfindById para obter nossa entidade do banco de dados:

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

Aqui, atualizamos nossa entidade original com um novo preço e salvamos as alterações de volta no banco de dados.

6. Conclusão

Neste artigo rápido, cobrimos o uso do método save () deCrudRepository. Este método pode ser usado para adicionar uma nova entrada ao seu banco de dados, bem como atualizar uma existente.

Como de costume, o código do artigo éover on GitHub.