2.1 Annotation @Entitet, @Tabel
Hvis du vil tilknytte din klasse til en tabel i databasen, så skal du tilføje så mange som 3 annoteringer til den.
Først skal du tilføje en kommentar til klassen @Entity
. Denne annotation foran klassen vil fortælle Hibernate, at dette ikke bare er en klasse, men en speciel klasse, hvis objekter skal gemmes i databasen.
Eksempel:
@Entity
class User {
public int id;
public String name;
public int level;
public Date createdDate;
}
Dette er nok for Hibernate til at behandle objekter af denne klasse på en særlig måde.
Den anden anmærkning er @Table
. Med dens hjælp kan du indstille navnet på tabellen i databasen, som denne klasse vil blive knyttet til. Eksempel:
@Entity
@Table(name="user")
class User {
public int id;
public String name;
public int level;
public Date createdDate;
}
Hvis klassenavnet og tabelnavnet er det samme, @Table
kan annoteringen udelades.
Desuden, hvis din applikation arbejder med tabeller fra flere skemaer på samme tid, skal du angive, i hvilket skema tabellen er placeret:
@Entity
@Table(name="user", schema="test")
class User {
public int id;
public String name;
public int level;
public Date createdDate;
}
Ja, alt er så enkelt, som det ser ud til.
2.2 @Kolonne annotering
Den anden vigtige ting at vide er tilknytningen af tabelkolonner til klassefelter. I den enkleste version vil Hibernate blot kortlægge felterne i din enhedsklasse til kolonnerne i den ønskede tabel.
Hvis du vil kontrollere alle nuancerne af kortlægning, kan du bruge annoteringen @Column
. Eksempel:
@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;
}
Annoteringen @Column
har forskellige parametre, nedenfor vil vi overveje de mest populære af dem:
# | Attributnavn | Attributtype | Beskrivelse |
---|---|---|---|
1 | navn | Snor | Indstiller tabelkolonnenavnet for klassefeltet |
2 | enestående | boolesk | Alle feltværdier skal være unikke |
3 | nullbar | boolesk | Feltet kan være nul |
4 | længde | int | Maksimal længde (for strenge) |
Lad os tilføje nogle begrænsninger til felterne i vores User Entity-klasse:
- brugernavn skal være unikt og ikke længere end 100 tegn
- niveau kan være nul
- createDate kan ikke være null
Så bliver vores anmærkninger:
@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;
}
Du kan oprette et objekt af typen Bruger og endda tildele alle null- felter til det, men når du forsøger at gemme det i databasen, vil Hibernate udføre en kontrol, og hvis nogen begrænsninger overtrædes, vil en undtagelse blive kastet.
2.3 @Id-anmærkning
Og endnu en vigtig bemærkning er @Id
. Den kan bruges til at indstille den primære nøgle til en tabel.
Du skal blot angive denne annotation for det ønskede felt - og Hibernate vil gøre alt selv:
@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;
}
Hvis du ønsker, at Hibernate selvstændigt skal generere id'erne for dine objekter, når du tilføjer dem til databasen, skal du tilføje en annotation mere - @GeneratedValue
. Så ville vores eksempel se sådan ud:
@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;
}
Vi har udeladt annoteringen @Column
for id- feltet her, da det ikke indeholder værdifuld information - feltnavnet og kolonnenavnet i tabellen er det samme, og takket være resten af annoteringerne forstår Hibernate allerede, at vi taler om en tabel kolonne.
GO TO FULL VERSION