2.1 Anmerkung @Entity, @Table

Wenn Sie Ihre Klasse einer Tabelle in der Datenbank zuordnen möchten, müssen Sie dazu bis zu drei Anmerkungen hinzufügen.

Zuerst müssen Sie der Klasse eine Anmerkung hinzufügen @Entity. Diese Annotation vor der Klasse teilt Hibernate mit, dass es sich nicht nur um eine Klasse handelt, sondern um eine spezielle Klasse, deren Objekte in der Datenbank gespeichert werden müssen.

Beispiel:

@Entity
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

Dies reicht aus, damit Hibernate Objekte dieser Klasse auf besondere Weise behandeln kann.

Die zweite Anmerkung lautet @Table. Mit seiner Hilfe können Sie den Namen der Tabelle in der Datenbank festlegen, mit der diese Klasse verknüpft wird. Beispiel:

@Entity
@Table(name="user")
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

Wenn der Klassenname und der Tabellenname identisch sind, @Tablekann die Anmerkung weggelassen werden.

Wenn Ihre Anwendung gleichzeitig mit Tabellen aus mehreren Schemata arbeitet, müssen Sie außerdem angeben, in welchem ​​Schema sich die Tabelle befindet:

@Entity
@Table(name="user", schema="test")
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

Ja, alles ist so einfach, wie es scheint.

2.2 @Column-Annotation

Das zweite wichtige Wissen ist die Zuordnung von Tabellenspalten zu Klassenfeldern. In der einfachsten Version ordnet Hibernate einfach die Felder Ihrer Entitätsklasse den Spalten der gewünschten Tabelle zu.

Wenn Sie alle Nuancen des Mappings kontrollieren möchten, können Sie die Annotation verwenden @Column. Beispiel:

@Entity
@Table(name="user")
class User {
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

Die Annotation @Columnhat verschiedene Parameter, im Folgenden betrachten wir die beliebtesten davon:

# Attributname Attributtyp Beschreibung
1 Name Zeichenfolge Legt den Tabellenspaltennamen für das Klassenfeld fest
2 einzigartig Boolescher Wert Alle Feldwerte müssen eindeutig sein
3 nullbar Boolescher Wert Das Feld kann null sein
4 Länge int Maximale Länge (für Strings)

Fügen wir den Feldern unserer User Entity-Klasse einige Einschränkungen hinzu:

  • Der Benutzername muss eindeutig sein und darf nicht länger als 100 Zeichen sein
  • level kann null sein
  • „createdDate“ darf nicht null sein

Dann lauten unsere Anmerkungen:

@Entity
@Table(name="user")
class User {
   @Column(name="id")
    public Integer id;

   @Column(name="name", unique=true, length=100)
   public String name;

   @Column(name="level", nullable=true)
   public Integer level;

   @Column(name="created_date", nullable=false)
   public Date createdDate;
}

Sie können ein Objekt vom Typ „ Benutzer“ erstellen und ihm sogar alle Nullfelder zuweisen. Wenn Sie jedoch versuchen, es in der Datenbank zu speichern, führt Hibernate eine Prüfung durch und wenn irgendwelche Einschränkungen verletzt werden, wird eine Ausnahme ausgelöst.

2.3 @Id-Annotation

Und noch eine wichtige Anmerkung ist @Id. Es kann verwendet werden, um den Primärschlüssel für eine Tabelle festzulegen.

Sie müssen nur diese Annotation für das gewünschte Feld angeben – und Hibernate erledigt alles selbst:

@Entity
@Table(name="user")
class User {
   @Id
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

Wenn Sie möchten, dass Hibernate die IDs Ihrer Objekte beim Hinzufügen zur Datenbank unabhängig generiert , müssen Sie eine weitere Anmerkung hinzufügen – @GeneratedValue. Dann würde unser Beispiel so aussehen:

@Entity
@Table(name="user")
class User {
   @Id
   @GeneratedValue
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

@ColumnDie Annotation für das Feld „id“ haben wir hier weggelassen , da es keine wertvollen Informationen enthält – der Feldname und der Spaltenname in der Tabelle sind gleich, und dank der restlichen Annotationen versteht Hibernate bereits, dass es sich um eine Tabelle handelt Spalte.