-
Notifications
You must be signed in to change notification settings - Fork 5
5. Backend_deutsch
Da wir Daten für bestimmte Entitäten (Produkt, Bestellung, Lieferanten ...) in einer Datenbank speichern, brauchen wir ein simples Werkzeug, um die Dinge für uns zu strukturieren. Das spring framework wandelt jede Java-Klasse in eine Tabelle in der Datenbank um, zum Beispiel die Klasse
@Entity
class Produkt {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private string name;
...
}
erstellt eine Tabelle in der Datenbank mit ihren Attributen als Spalten.
Nun müssen wir diese Tabellen mit CRUD-Operationen (Erstellen, Lesen, Aktualisieren und Löschen) bearbeiten. Beispiel: neues Produkt erstellen, alle Produkte abrufen usw. Dies kann mit Hilfe von JPA Repositories einfach durchgeführt werden.
@Repository
public interface ProductRepository extends JpaRepository<Product, Integer> {}
JpaRepository verfügt über eingebaute Methoden wie .save() .findAll(), die je nach Entität Objekte in der Datenbank zurückgeben/schreiben.
Wie wir gelernt haben, müssen Websites HTTP-Anfragen (GET, POST, PUT ...) verwalten.
Das Frontend sendet solche Anfragen an das Backend, das Backend sollte entsprechend antworten und Objekte an das Frontend zurücksenden.
Als Beispiel:
Wenn der Benutzer auf 'Lieferanten' klickt, sollte das Frontend eine GET-Anfrage an das Backend senden. Der Request wird an einen bestimmten Pfad gesendet, sagen wir https://MehrMarkt.de/Lieferant/all.
Der spring controller empfängt diese Anfrage und verwendet JpaRepository, um alle Lieferanten zurückzuschicken.
Der spring controller sieht wie folgt aus:
@RestController
@RequestMapping("/Lieferant") // here we specify the path for the entity Lieferant
public class LieferantController {
@Autowired
private LieferantRepository lieferantRepository; // we link the Repository
@GetMapping("/all") // here we specify the path for getting all the Lieferanten
public List<Lieferant> getAllLieferanten(){
return lieferantRepository.findAll(); // we return all the Lieferanten
}
Das Frontend erhält daraufhin ein JSON-Objekt (JavaScript Object Notation), das alle Daten enthält.
[
{
"id": 1,
"name": "Lieferando",
"products": []
},
{
"id": 2,
"name": "ToGo!",
"products": []
}
]
Ich habe Postman verwendet, um die HTTP-Anfrage zu senden. Das ist ein Screenshot von dem, was tatsächlich passiert ist:
-
Bitte MariaDB herunterladen.
-
IntelliJ öffnen und neue Datenbank Verbindung erstellen (wenn nicht schon für DBWT)
- neue Schema anlegen (Datenbank), mit dem Namen test-mehrmarkt
- in der Datei application.properties unter Resources, gibt's die Datenbanks Einstellungen
-
Klone das Projekt. Wenn du es noch nicht getan hast, siehe Git Clone the project!
-
Jetzt öffne den Backend-Ordner separat mit Intellij.
-
Es erscheint ein Pop-up-Fenster, in dem du um Erlaubnis zur Installation der Maven-Abhängigkeiten gefragt wirst. Klick auf 'Installieren'.
-
Falls du es verpasst hast, findest du die Datei file pom.xml unter mehrmarktsystem. Rechtsklick / Maven / Generate Sources and Update Folders
-
Öffne die Datei in src/main/java/com/mehrmarkt/mehrmarktsystem/MehrmarktsystemApplication.java. Hier wirst du sie ausführen können:
Deine App läuft erfolgreich, wenn das Terminal Folgendes anzeigt:
und wenn du zurück zu phpMyAdmin gehst und die Datenbank test-mehrmarkt öffnest, findest du automatisch generierte Tabellen: