Skip to content

5. Backend_deutsch

majdbousaad edited this page Nov 25, 2022 · 2 revisions

Java spring framework

Warum spring framework?

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 können wir mit dem Frontend interagieren?

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:

image

Java Spring ausführen

Deine Datenbank aufsetzen

  1. Bitte MariaDB herunterladen.

  2. IntelliJ öffnen und neue Datenbank Verbindung erstellen (wenn nicht schon für DBWT)

image
  1. neue Schema anlegen (Datenbank), mit dem Namen test-mehrmarkt
image
  1. in der Datei application.properties unter Resources, gibt's die Datenbanks Einstellungen
image

Die App ausführen

  1. Klone das Projekt. Wenn du es noch nicht getan hast, siehe Git Clone the project!

  2. Jetzt öffne den Backend-Ordner separat mit Intellij.

  3. Es erscheint ein Pop-up-Fenster, in dem du um Erlaubnis zur Installation der Maven-Abhängigkeiten gefragt wirst. Klick auf 'Installieren'.

  4. Falls du es verpasst hast, findest du die Datei file pom.xml unter mehrmarktsystem. Rechtsklick / Maven / Generate Sources and Update Folders

  5. Öffne die Datei in src/main/java/com/mehrmarkt/mehrmarktsystem/MehrmarktsystemApplication.java. Hier wirst du sie ausführen können:

image

Deine App läuft erfolgreich, wenn das Terminal Folgendes anzeigt:

image

und wenn du zurück zu phpMyAdmin gehst und die Datenbank test-mehrmarkt öffnest, findest du automatisch generierte Tabellen:

image