Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Automatische Generierung von Boilerplate-Code | JDBC-Übersicht
Java-Datenmanipulation mit Hibernate
course content

Kursinhalt

Java-Datenmanipulation mit Hibernate

Java-Datenmanipulation mit Hibernate

1. JDBC-Übersicht
2. Grundlagen von Hibernate
3. Letzte Feinabstimmungen

book
Automatische Generierung von Boilerplate-Code

Platzersparnis im Java-Code

Haben Sie jemals bemerkt, wie viele Boilerplate-Dinge es in jedem Java-Code gibt? Zum Beispiel, wenn Sie ein Modell schreiben, müssen Sie einen konstruktionslosen Konstruktor, einen Konstruktor mit Argumenten, Getter, Setter, die toString() und hashCode() Methoden überschreiben und vieles mehr deklarieren. Typischerweise nimmt dies 70+ Zeilen Code in Anspruch, was es schwierig macht, zusätzliche Logik in der Klasse zu erkennen, wenn sie vorhanden ist.

Fazit: Getter, Setter und zusätzliche Boilerplate-Konstruktionen können Ihren Code erheblich überladen. Es gibt jedoch eine Erweiterung, die dieses Problem effektiv löst - Project Lombok.

Lombok

Um mit Project Lombok zu beginnen, müssen wir es in die pom.xml importieren (wenn Sie Maven verwenden):

Großartig, jetzt können wir beginnen, unseren Code zu verbessern.

Schauen wir uns einige der wichtigsten Anmerkungen an:

Getter und Setter

  • @Getter und @Setter: Generieren Standard-Getter und -Setter für ein Feld. Sie können auf Feldebene oder Klassenebene angewendet werden.

Konstruktoren

  • @NoArgsConstructor: Generiert einen Konstruktor ohne Argumente;
  • @RequiredArgsConstructor: Generiert einen Konstruktor mit einem Parameter für jedes Feld, das spezielle Verarbeitung erfordert (wie Felder, die mit @NonNull annotiert sind oder finale Felder);
  • @AllArgsConstructor: Generiert einen Konstruktor mit einem Parameter für jedes Feld der Klasse.

Schauen wir uns einige Codebeispiele an, wie diese Annotationen angewendet werden können.

Diese Annotationen sollten über einer Klasse platziert werden:

java

OldEmployee

copy
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
package com.example; import java.util.Date; public class Employee { private int id; private String name; private String position; private double salary; private Date hireDate; public Employee() { } public Employee(int id, String name, String position, double salary, Date hireDate) { this.id = id; this.name = name; this.position = position; this.salary = salary; this.hireDate = hireDate; } public int getId() { return id; } public Employee(String name, String position, double salary) { this.name = name; this.position = position; this.salary = salary; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPosition() { return position; } public void setPosition(String position) { this.position = position; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } public Date getHireDate() { return hireDate; } public void setHireDate(Date hireDate) { this.hireDate = hireDate; } }

Wie Sie sehen können, sieht dieser Code ziemlich umfangreich aus, und es kann schwierig sein, darin etwas zu lesen, obwohl er strukturiert ist.

Lassen Sie uns ihn mit Hilfe von Lombok-Annotationen verbessern:

java

improvedEmployee

copy
12345678910111213141516171819202122232425
package com.example; import lombok.*; import java.util.Date; @Getter @Setter @AllArgsConstructor @RequiredArgsConstructor public class Employee { private int id; @NonNull private String name; @NonNull private String position; @NonNull private double salary; private Date hireDate; }

Also, von 73 Zeilen haben wir es auf 25 reduziert. Jetzt können wir klar sehen, welche Felder in dieser Klasse sind, dass es Getter, Setter, einen Konstruktor gibt, der alle Argumente nimmt, und einen Konstruktor, der 3 Argumente nimmt: name, position und salary. Auf diese Weise haben wir den Code erheblich reduziert, während wir die gleiche Funktionalität beibehalten.

Zusätzliche Anmerkungen:

Project Lombok bietet auch zusätzliche Anmerkungen, wie z.B. für das Überschreiben von toString(), equals() und hashCode().

Schauen wir uns einige zusätzliche Anmerkungen an, die nützlich sein können:

Hier sind einige zusätzliche Anmerkungen im Markdown-Format:

AnnotationBeschreibung
@ToStringGeneriert eine toString()-Methode für die Klasse.
@EqualsAndHashCodeGeneriert equals(Object other) und hashCode()-Methoden.
@NonNullMarkiert ein Feld als nicht null-werte zulassend und generiert automatisch entsprechende Prüfungen.
@ValueMarkiert die Klasse als unveränderlich, fügt @Getter hinzu und macht alle Felder final und private.
@DataKombiniert @Getter, @Setter und @RequiredArgsConstructor.

Lassen Sie uns nun unseren Code weiter verbessern, indem wir @Getter, @Setter und @AllArgsConstructor durch die @Data-Annotation ersetzen, die vor dem class Schlüsselwort platziert wird. Zusätzlich fügen wir die @ToString und @EqualsAndHashCode Anmerkungen hinzu.

Das Ergebnis wird der folgende Code sein:

java

ImprovedImprovedEmployee

copy
123456789101112131415161718192021222324
package com.example; import lombok.*; import java.util.Date; @EqualsAndHashCode @ToString @RequiredArgsConstructor public @Data class Employee { private int id; @NonNull private String name; @NonNull private String position; @NonNull private double salary; private Date hireDate; }

Hinweis

Wir haben nicht alle Anmerkungen aus der Project Lombok-Bibliothek behandelt. Dieses Kapitel behandelt die Hauptanmerkungen und Funktionen dieser Bibliothek. In Zukunft, wenn wir eine spezifische Anmerkung verwenden müssen, die ich in diesem Kapitel nicht beschrieben habe, werde ich separat erklären, was diese spezielle Anmerkung bedeutet.

Zusammenfassend lässt sich sagen, dass Lombok ein mächtiges Werkzeug zur Optimierung von Java-Code ist, dessen Verwendung jedoch mit Vorsicht erfolgen sollte. Alle Änderungen werden während der Kompilierung vorgenommen, und Sie müssen das Lombok-Plugin in Ihrer integrierten Entwicklungsumgebung (IDE) installieren, um diese Änderungen zu sehen. Außerdem ist es erwähnenswert, dass übermäßiger Gebrauch von Lombok es schwierig machen kann, den Code zu lesen und zu debuggen, wenn Entwickler nicht an diesen Stil gewöhnt sind.

In unserem Kurs werden wir Lombok verwenden, da wir intensiv mit Entitäten arbeiten werden, die in Form von Modellklassen vorliegen.

1. Was ist der Hauptvorteil der Verwendung von Project Lombok in Java-Code?

2. Welches Maven-Abhängigkeitselement ist entscheidend, um den Umfang von Lombok in Ihrem Projekt zu definieren?

3. Was macht die Lombok-Annotation @NoArgsConstructor?

4. Welche Lombok-Annotation wird verwendet, um alle Getter, Setter und erforderlichen Argumentkonstruktoren in einer Klasse einzuschließen?

5. Die @NonNull-Annotation in Lombok wird verwendet, um:

Was ist der Hauptvorteil der Verwendung von Project Lombok in Java-Code?

Was ist der Hauptvorteil der Verwendung von Project Lombok in Java-Code?

Wählen Sie die richtige Antwort aus

Welches Maven-Abhängigkeitselement ist entscheidend, um den Umfang von Lombok in Ihrem Projekt zu definieren?

Welches Maven-Abhängigkeitselement ist entscheidend, um den Umfang von Lombok in Ihrem Projekt zu definieren?

Wählen Sie die richtige Antwort aus

Was macht die Lombok-Annotation `@NoArgsConstructor`?

Was macht die Lombok-Annotation @NoArgsConstructor?

Wählen Sie die richtige Antwort aus

Welche Lombok-Annotation wird verwendet, um alle Getter, Setter und erforderlichen Argumentkonstruktoren in einer Klasse einzuschließen?

Welche Lombok-Annotation wird verwendet, um alle Getter, Setter und erforderlichen Argumentkonstruktoren in einer Klasse einzuschließen?

Wählen Sie die richtige Antwort aus

Die `@NonNull`-Annotation in Lombok wird verwendet, um:

Die @NonNull-Annotation in Lombok wird verwendet, um:

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

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