Federdaten - CrudRepository save () -Methode

1. Übersicht

CrudRepository ist eine Spring Data-Schnittstelle für generische CRUD-Operationen in einem Repository eines bestimmten Typs. Es bietet verschiedene sofort einsatzbereite Methoden für die Interaktion mit einer Datenbank.

In diesem Tutorial erklären wir, wie und wann die CrudRepository save () -Methode verwendet werden soll.

Weitere Informationen zu Spring Data-Repositorys finden Sie in unserem Artikel, in dem CrudRepository mit anderen Repository-Schnittstellen des Frameworks verglichen wird .

2. Abhängigkeiten

Wir müssen unserer pom.xml- Datei Spring Data- und H2-Datenbankabhängigkeiten hinzufügen :

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

3. Beispielanwendung

Erstellen wir zunächst unsere Spring Data-Entität mit dem Namen MerchandiseEntity . Diese Klasse definiert die Datentypen, die beim Aufrufen der save () -Methode in der Datenbank beibehalten werden:

@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; } }

Als Nächstes erstellen wir eine CrudRepository- Schnittstelle für die Arbeit mit MerchandiseEntity :

@Repository public interface InventoryRepository extends CrudRepository { }

Hier geben wir die Klasse der Entität und die Klasse der Entitäts-ID, MerchandiseEntity und Long, an . Wenn eine Instanz dieses Repositorys instanziiert wird, ist die zugrunde liegende Logik automatisch für die Arbeit mit unserer MerchandiseEntity- Klasse vorhanden.

Mit sehr wenig Code sind wir bereits bereit, die save () -Methode zu verwenden.

4. CrudRepository save (), um eine neue Instanz hinzuzufügen

Erstellen Sie eine neue Instanz von MerchandiseEntity und speichern Sie sie mithilfe des InventoryRepository in der Datenbank :

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

Wenn Sie dies ausführen, wird ein neuer Eintrag in der Datenbanktabelle für MerchandiseEntity erstellt . Beachten Sie, dass wir nie eine ID angegeben haben . Die Instanz wird anfänglich mit einem Nullwert für ihre ID erstellt. Wenn wir die save () -Methode aufrufen , wird automatisch eine ID generiert.

Die save () -Methode gibt die gespeicherte Entität einschließlich des aktualisierten ID- Felds zurück.

5. CrudRepository save (), um eine Instanz zu aktualisieren

Wir können dieselbe save () -Methode verwenden , um einen vorhandenen Eintrag in unserer Datenbank zu aktualisieren . Angenommen, wir haben eine MerchandiseEntity- Instanz mit einem bestimmten Titel gespeichert :

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

Später stellten wir jedoch fest, dass wir den Preis des Artikels aktualisieren wollten. Wir könnten dann einfach die Entität aus der Datenbank abrufen, die Änderung vornehmen und die save () -Methode wie zuvor verwenden.

Angenommen, wir kennen die ID des Elements ( pantId ), können wir die CRUDRepository- Methode findById verwenden , um unsere Entität aus der Datenbank abzurufen :

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

Hier haben wir unsere ursprüngliche Entität mit einem neuen Preis aktualisiert und die Änderungen wieder in der Datenbank gespeichert.

6. Fazit

In diesem kurzen Artikel haben wir die Verwendung der save () -Methode von CrudRepository behandelt . Mit dieser Methode können Sie einen neuen Eintrag in Ihre Datenbank einfügen und einen vorhandenen aktualisieren.

Wie üblich ist der Code für den Artikel auf GitHub beendet.