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.
Spring Data JPA - Métodos de Exclusão Derivados
Aprenda a definir os métodos deleteBy e removeBy dos Dados da Primavera
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.