Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Die Datenbank zu Unserer Anwendung Hinzufügen | Arbeiten mit Datenbanken
Spring Boot Backend
course content

Kursinhalt

Spring Boot Backend

Spring Boot Backend

1. Grundlagen der Backend-Entwicklung
2. Spring Boot Grundlagen
3. RESTful API
4. Arbeiten mit Datenbanken
5. Testen von Backend-Anwendungen

book
Die Datenbank zu Unserer Anwendung Hinzufügen

Im vorherigen Kapitel haben wir behandelt, was JPA und Hibernate sind. In diesem Kapitel werden wir eine Datenbank in unsere Anwendung integrieren und versuchen, CRUD-Operationen (Create, Read, Update, Delete) durchzuführen.

Beispiel für die Arbeit mit einer Datenbank:

Modellanpassung

Das erste, was wir tun müssen, ist das Modell zu annotieren, damit Hibernate damit arbeiten kann und versteht, zu welcher Tabelle es gehört.

java

Book

copy
12345678910
@Getter @Setter @Entity(name = "book") @Table(name = "book") public class Book { private String id; private String name; private String author; private String price; }

In der @Entity(name = "books") Annotation ermöglicht der name Parameter die Angabe des Namens der Entität, der standardmäßig dem Namen der Klasse entspricht.

Die @Table Annotation wird verwendet, um spezifische Einstellungen für die Tabelle festzulegen, die mit der Entität verbunden ist.

In unserem Fall wird diese Tabelle durch Migrationen erstellt, sodass wir sie nicht manuell erstellen müssen.

Wir benötigen auch, dass unsere Entität automatisch eine ID generiert, um ihr einen einzigartigen Wert in der Datenbank zuzuweisen. Um dies zu erreichen, können wir die @Id Annotation auf dem Feld verwenden, das unsere ID darstellt, zusammen mit der @GeneratedValue Annotation.

Die Annotationen @Id und @GeneratedValue(strategy = GenerationType.UUID) geben an, dass das id Feld ein Primärschlüssel ist, der automatisch im UUID-Format generiert wird.

Dies gewährleistet eindeutige Zeichenfolgenkennungen für jeden Datensatz in der Tabelle, was für verteilte Systeme von Vorteil ist und die globale Eindeutigkeit der Kennungen garantiert. UUID werden als Zeichenfolgen gespeichert.

Hinzufügen des Repositories

Derzeit simuliert unser Repository eine Datenbank, indem es alle Entitäten in einer List speichert. Aber was, wenn ich Ihnen sagen würde, dass die Verwendung einer echten Datenbank tatsächlich viel einfacher ist!

Um mit einer echten Datenbank zu interagieren, können wir das JpaRepository-Interface verwenden, das eine Vielzahl von eingebauten Methoden für die Arbeit mit Daten bietet.

java

BookRepository

copy
1234
@Repository public interface BookRepository extends JpaRepository<Book, String> { // JpaRepository already provides methods for CRUD operations }

In JpaRepository<Book, String>, übergeben wir zwei Parameter: Book, das den Entitätstyp darstellt, mit dem das Repository arbeiten wird, und String, das der Datentyp des Primärschlüssels (ID) für die Book Entität ist.

Und das ist alles, was wir brauchen! Jetzt haben wir ein voll funktionsfähiges Repository!

Hauptmethoden von JpaRepository

Erstellen benutzerdefinierter SQL-Abfragen

Spring Data JPA kann automatisch Abfragen generieren, wenn die Methode gemäß einem Muster benannt ist, das mit der Datenstruktur übereinstimmt. Dies geschieht durch die Verwendung von spezifischen Schlüsselwörtern, die angeben, wie die Abfrage konstruiert werden soll.

Kurze Zusammenfassung des Videos

Diese Methode generiert automatisch eine SQL-Abfrage, die nach allen Büchern des angegebenen author sucht. Die generierte Abfrage wird folgendermaßen aussehen:

Wie es funktioniert

Der Methodenname findBookByAuthor(String author) wird wie folgt konstruiert: Er beginnt mit dem Präfix findBook, was darauf hinweist, dass die Methode eine Suche durchführt. Danach folgt ByAuthor, was das Feld in der Book-Entität darstellt, das für die Suche verwendet wird.

Wenn diese Methode aufgerufen wird, generiert Spring Data JPA automatisch eine Abfrage, die nach Datensätzen sucht, bei denen das author-Feld mit dem bereitgestellten Parameter übereinstimmt.

Generieren von SQL-Abfragen mit der @Query

Die @Query Annotation in Spring Data JPA ermöglicht es Ihnen, sowohl JPQL als auch native SQL zu verwenden, was Flexibilität bei der Wahl des geeigneten Ansatzes bietet.

JPQL

JPQL (Java Persistence Query Language) arbeitet mit Objekten und deren Eigenschaften.

Diese Abfrage sucht nach allen Book Objekten, bei denen das author Feld mit dem angegebenen Wert übereinstimmt. JPQL ist abstrakter und spiegelt die Datenmodellstruktur wider.

Native SQL

Native SQL interagiert direkt mit Datenbanktabellen.

In diesem Fall operiert die Abfrage auf der book Tabelle, was die Verwendung spezifischer SQL-Funktionen und Optimierungen ermöglicht.

Auswahl eines Ansatzes

Wenn Sie eine einfache Abfrage benötigen, die mit dem Datenmodell übereinstimmt, verwenden Sie JPQL. Wenn eine komplexe Abfrage oder datenbankspezifische Funktionen erforderlich sind, wählen Sie native SQL.

Daher bietet @Query die Flexibilität, einfach zwischen den beiden Ansätzen basierend auf Ihren Bedürfnissen zu wechseln.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 5
We're sorry to hear that something went wrong. What happened?
some-alt