2.1 Adnotare @Entity, @Table
Dacă doriți să vă mapați clasa la un tabel din baza de date, atunci pentru aceasta trebuie să adăugați până la 3 adnotări la acesta.
Mai întâi, trebuie să adăugați o adnotare la clasă @Entity
. Această adnotare în fața clasei îi va spune lui Hibernate că aceasta nu este doar o clasă, ci o clasă specială ale cărei obiecte trebuie să fie stocate în baza de date.
Exemplu:
@Entity
class User {
public int id;
public String name;
public int level;
public Date createdDate;
}
Acest lucru este suficient pentru ca Hibernate să trateze obiectele acestei clase într-un mod special.
A doua adnotare este @Table
. Cu ajutorul acestuia, puteți seta numele tabelului din baza de date cu care va fi asociată această clasă. Exemplu:
@Entity
@Table(name="user")
class User {
public int id;
public String name;
public int level;
public Date createdDate;
}
Dacă numele clasei și numele tabelului sunt aceleași, atunci adnotarea @Table
poate fi omisă.
De asemenea, dacă aplicația dvs. funcționează cu tabele din mai multe scheme în același timp, atunci trebuie să specificați în ce anumită schemă se află tabelul:
@Entity
@Table(name="user", schema="test")
class User {
public int id;
public String name;
public int level;
public Date createdDate;
}
Da, totul este la fel de simplu pe cât pare.
2.2 @Adnotare pe coloană
Al doilea lucru important de știut este maparea coloanelor de tabel cu câmpurile de clasă. În cea mai simplă versiune, Hibernate va mapa pur și simplu câmpurile clasei dvs. de entități la coloanele tabelului dorit.
Dacă doriți să controlați toate nuanțele cartografierii, puteți utiliza adnotarea @Column
. Exemplu:
@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;
}
Adnotarea @Column
are diferiți parametri, mai jos îi vom considera pe cei mai populari dintre ei:
# | Numele atributului | Tipul de atribut | Descriere |
---|---|---|---|
1 | Nume | Şir | Setează numele coloanei tabelului pentru câmpul de clasă |
2 | unic | boolean | Toate valorile câmpurilor trebuie să fie unice |
3 | nulabil | boolean | Câmpul poate fi nul |
4 | lungime | int | Lungime maximă (pentru șiruri) |
Să adăugăm câteva constrângeri la câmpurile clasei noastre de Entitate utilizator:
- numele de utilizator trebuie să fie unic și să nu depășească 100 de caractere
- nivelul poate fi nul
- data creată nu poate fi nulă
Apoi adnotările noastre devin:
@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;
}
Puteți crea un obiect de tip User și chiar îi puteți atribui toate câmpurile nule , totuși, atunci când încercați să-l salvați în baza de date, Hibernate va efectua o verificare și, dacă sunt încălcate orice restricții, va fi aruncată o excepție.
2.3 Adnotare @Id
Și încă o adnotare importantă este @Id
. Poate fi folosit pentru a seta cheia primară pentru un tabel.
Trebuie doar să specificați această adnotare pentru câmpul dorit - iar Hibernate va face totul singur:
@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;
}
Dacă doriți ca Hibernate să genereze în mod independent ID-urile obiectelor dvs. atunci când le adăugați la baza de date, atunci trebuie să adăugați încă o adnotare - @GeneratedValue
. Atunci exemplul nostru ar arăta astfel:
@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;
}
Am omis aici adnotarea @Column
pentru câmpul id , deoarece nu conține informații valoroase - numele câmpului și numele coloanei din tabel sunt aceleași, iar datorită restului adnotărilor, Hibernate înțelege deja că vorbim despre un tabel coloană.
GO TO FULL VERSION