2.1 Anotasyon @Entity, @Table

Kung nais mong i-map ang iyong klase sa isang talahanayan sa database, para dito kailangan mong magdagdag ng kasing dami ng 3 anotasyon dito.

Una, kailangan mong magdagdag ng anotasyon sa klase @Entity. Ang anotasyong ito sa harap ng klase ay magsasabi sa Hibernate na ito ay hindi lamang isang klase, ngunit isang espesyal na klase na ang mga bagay ay kailangang maimbak sa database.

Halimbawa:

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

Ito ay sapat na para sa Hibernate na tratuhin ang mga bagay ng klase na ito sa isang espesyal na paraan.

Ang pangalawang anotasyon ay @Table. Sa tulong nito, maaari mong itakda ang pangalan ng talahanayan sa database kung saan maiuugnay ang klase na ito. Halimbawa:

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

Kung magkapareho ang pangalan ng klase at pangalan ng talahanayan, @Tablemaaaring alisin ang anotasyon.

Gayundin, kung gumagana ang iyong application sa mga talahanayan mula sa ilang mga schema nang sabay-sabay, kailangan mong tukuyin kung saang partikular na schema matatagpuan ang talahanayan:

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

Oo, ang lahat ay kasing simple ng tila.

2.2 @Column annotation

Ang pangalawang mahalagang bagay na dapat malaman ay ang pagmamapa ng mga column ng talahanayan sa mga field ng klase. Sa pinakasimpleng bersyon, imamapa lang ng Hibernate ang mga field ng klase ng iyong entity sa mga column ng gustong talahanayan.

Kung gusto mong kontrolin ang lahat ng mga nuances ng pagmamapa, maaari mong gamitin ang anotasyon @Column. Halimbawa:

@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;
}

Ang anotasyon @Columnay may iba't ibang mga parameter, sa ibaba ay isasaalang-alang namin ang pinakasikat sa kanila:

# Pangalan ng katangian Uri ng katangian Paglalarawan
1 pangalan String Itinatakda ang pangalan ng column ng talahanayan para sa field ng klase
2 kakaiba boolean Ang lahat ng mga halaga ng field ay dapat na natatangi
3 nullable boolean Maaaring null ang field
4 haba int Pinakamataas na haba (para sa mga string)

Magdagdag tayo ng ilang mga hadlang sa mga field ng aming klase ng User Entity:

  • ang username ay dapat na natatangi at hindi hihigit sa 100 character
  • antas ay maaaring null
  • Ang createdDate ay hindi maaaring null

Pagkatapos ang aming mga anotasyon ay magiging:

@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;
}

Maaari kang lumikha ng isang object ng uri ng User at kahit na italaga ang lahat ng mga null na patlang dito, gayunpaman, kapag sinubukan mong i-save ito sa database, ang Hibernate ay magsasagawa ng isang tseke, at kung anumang mga paghihigpit ay nilabag, ang isang pagbubukod ay itatapon.

2.3 @Id annotation

At ang isa pang mahalagang anotasyon ay @Id. Maaari itong magamit upang itakda ang pangunahing susi para sa isang talahanayan.

Kailangan mo lang tukuyin ang anotasyong ito para sa nais na field - at gagawin ng Hibernate ang lahat mismo:

@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;
}

Kung gusto mong independiyenteng bumuo ng Hibernate ang mga ID ng iyong mga bagay kapag idinaragdag ang mga ito sa database, kailangan mong magdagdag ng isa pang anotasyon - @GeneratedValue. Pagkatapos ang aming halimbawa ay magiging ganito:

@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;
}

Inalis namin ang anotasyon @Columnpara sa field ng id dito, dahil hindi ito nagdadala ng mahalagang impormasyon - ang pangalan ng field at pangalan ng column sa talahanayan ay pareho, at salamat sa iba pang mga anotasyon, naiintindihan na ng Hibernate na ang pinag-uusapan natin ay isang talahanayan hanay.