Читать книгу Spring Boot - Mark Heckler - Страница 48

Die @Entity

Оглавление

Wie ich bereits erwähnte, ist H2 eine JPA-konforme Datenbank, sodass ich JPA-Annotationen hinzufüge. Zur Klasse Coffee selbst füge ich eine @Entity-Annotation aus javax.persistence hinzu, die signalisiert, dass Coffee eine dauerhaft speicherbare Entität ist. Zur existierenden id-Membervariablen füge ich die Annotation @Id (auch aus javax.persistence) hinzu, um sie als ID-Feld der Datenbanktabelle zu kennzeichnen.

Falls der Klassenname – hier: Coffee – nicht dem gewünschten Datenbanknamen entspricht, akzeptiert die @Entity-Annotation einen name-Parameter, mit dem sich der Name der Datentabelle an die annotierte Entität anpassen lässt.

Eine besonders hilfsbereite IDE meldet Ihnen vielleicht sogar zurück, dass in der Klasse Coffee noch etwas fehlt. So unterstreicht z.B. IntelliJ den Klassennamen rot und liefert beim Darüberfahren mit der Maus das hilfreiche Pop-up, das in Abbildung 4-1 zu sehen ist.

Abbildung 4-1: Fehlender Konstruktor in der JPA-Klasse »Coffee«

Java Persistence API verlangt einen Konstruktor ohne Argument, der verwendet wird, wenn Objekte aus Datenbanktabellenzeilen erzeugt werden. Diesen werde ich deshalb als Nächstes hinzufügen. Und damit bekommen wir auch schon unsere nächste IDE-Warnung, die in Abbildung 4-2 gezeigt wird: Um einen argumentlosen Konstruktor zu bekommen, müssen alle Membervariablen veränderlich sein, das heißt nicht final.

Abbildung 4-2: Bei einem Konstruktor ohne Argument darf »id« nicht final sein.

Wir lösen das, indem wir das Schlüsselwort final aus der Deklaration der Membervariablen id entfernen. Wenn wir id veränderbar machen, benötigt unsere Klasse Coffee außerdem eine Mutator-Methode für id, damit JPA einen Wert zu diesem Member zuweisen kann. Ich füge also noch die Methode setId() hinzu, wie Abbildung 4-3 zeigt.

Abbildung 4-3: Die neue »setId()«-Methode

Spring Boot

Подняться наверх