Spring Data - CrudRepository-Methode save ()

Quelldaten - CrudRepository save () Methode

1. Überblick

CrudRepository ist einSpring Data interface for generic CRUD operations on a repository of a specific type. Es bietet verschiedene sofort einsatzbereite Methoden für die Interaktion mit einer Datenbank.

In diesem Tutorial erklären wir, wie und wann dieCrudRepositorysave()-Methode verwendet wird.

Um mehr über Spring Data-Repositorys zu erfahren, werfen Sie einen Blick auf unserearticle, dieCrudRepository mit anderen Repository-Schnittstellen des Frameworks vergleichen.

Weitere Lektüre:

Frühlingsdaten JPA @Query

Erfahren Sie, wie Sie die Annotation @Query in Spring Data JPA verwenden, um benutzerdefinierte Abfragen mit JPQL und nativem SQL zu definieren.

Read more

Spring Data JPA - Abgeleitete Löschmethoden

Erfahren Sie, wie Sie die Spring Data-Methoden deleteBy und removeBy definieren

Read more

2. Abhängigkeiten

Wir müssen die DatenbankabhängigkeitenSpring Data undH2zu unserer Dateipom.xmlhinzufü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 NamenMerchandiseEntity. Diese Klasse wirddefine the data types that will get persisted to the database when we call the save() Methode:

@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 eineCrudRepository-Schnittstelle, um mit denMerchandiseEntity zu arbeiten:

@Repository
public interface InventoryRepository
  extends CrudRepository {
}

Here we specify the entity’s class and the entity id’s class, MerchandiseEntity and Long. Wenn eine Instanz dieses Repositorys instanziiert wird, ist die zugrunde liegende Logik automatisch für die Arbeit mit unsererMerchandiseEntity-Klasse vorhanden.

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

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

Erstellen Sie eine neue Instanz vonMerchandiseEntity und speichern Sie sie mitInventoryRepository 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ürMerchandiseEntity erstellt. Beachten Sie, dass wir niemalsid angegeben haben. Die Instanz wird anfänglich mit einemnull-Wert fürid erstellt. Wenn wir diesave()-Methode aufrufen, wird automatisch einid generiert.

Die Methodesave() gibt die gespeicherte Entität einschließlich des aktualisierten Feldsidzurück.

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

Wir können dieselbe save () -Methodeto update an existing entry in our database verwenden. Angenommen, wir haben eineMerchandiseEntity-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 Methodesave()wie zuvor verwenden.

Angenommen, wir kennen dieid des Elements (pantsId), können wir dieCRUDRepository-MethodefindById 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 vonCrudRepositorybehandelt. Mit dieser Methode können Sie einen neuen Eintrag in Ihre Datenbank einfügen und einen vorhandenen Eintrag aktualisieren.

Wie üblich lautet der Code für den Artikelover on GitHub.