Spring Data - CrudRepository save () Metodo

1. Panoramica

CrudRepository è un'interfaccia Spring Data per operazioni CRUD generiche su un repository di un tipo specifico. Fornisce diversi metodi pronti all'uso per interagire con un database.

In questo tutorial, spiegheremo come e quando utilizzare il metodo save () di CrudRepository .

Per saperne di più sui repository di Spring Data dai un'occhiata al nostro articolo che confronta CrudRepository con altre interfacce di repository del framework.

2. Dipendenze

Dovremo aggiungere Spring Data e le dipendenze del database H2 al nostro file pom.xml :

 org.springframework.boot spring-boot-starter-data-jpa   com.h2database h2 runtime 

3. Applicazione di esempio

Creiamo prima la nostra entità Spring Data chiamata MerchandiseEntity . Questa classe definirà i tipi di dati che verranno mantenuti nel database quando chiameremo il metodo 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; } }

Successivamente, creiamo un'interfaccia CrudRepository per lavorare con MerchandiseEntity :

@Repository public interface InventoryRepository extends CrudRepository { }

Qui specifichiamo la classe dell'entità e la classe dell'ID dell'entità, MerchandiseEntity e Long . Quando viene creata un'istanza di questo repository, la logica sottostante sarà automaticamente in atto per lavorare con la nostra classe MerchandiseEntity .

Quindi, con pochissimo codice, siamo già pronti per iniziare a utilizzare il metodo save () .

4. CrudRepository save () per aggiungere una nuova istanza

Creiamo una nuova istanza di MerchandiseEntity e salviamola nel database utilizzando InventoryRepository :

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

L'esecuzione di questo creerà una nuova voce nella tabella del database per MerchandiseEntity . Notare che non abbiamo mai specificato un id . L'istanza viene inizialmente creata con un valore nullo per il suo id e quando chiamiamo il metodo save () , viene generato automaticamente un id .

Il metodo save () restituisce l'entità salvata, incluso il campo id aggiornato .

5. CrudRepository save () per aggiornare un'istanza

Possiamo usare lo stesso metodo save () per aggiornare una voce esistente nel nostro database . Supponiamo di aver salvato un'istanza di MerchandiseEntity con un titolo specifico:

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

Ma in seguito abbiamo scoperto che volevamo aggiornare il prezzo dell'articolo. Potremmo quindi semplicemente ottenere l'entità dal database, apportare la modifica e utilizzare il metodo save () come prima.

Supponendo che sappiamo che la id della voce ( pantsId ), possiamo usare il CRUDRepository metodo di findById per ottenere il nostro organismo dal database:

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

Qui, abbiamo aggiornato la nostra entità originale con un nuovo prezzo e abbiamo salvato le modifiche nel database.

6. Conclusione

In questo rapido articolo, abbiamo trattato l'uso del metodo save () di CrudRepository . Questo metodo può essere utilizzato per aggiungere una nuova voce al database e per aggiornarne una esistente.

Come al solito, il codice dell'articolo è finito su GitHub.