2.1 Anotasi @Entiti, @Jadual

Jika anda ingin memetakan kelas anda ke jadual dalam pangkalan data, maka untuk ini anda perlu menambah sebanyak 3 anotasi kepadanya.

Pertama, anda perlu menambah anotasi pada kelas @Entity. Anotasi di hadapan kelas ini akan memberitahu Hibernate bahawa ini bukan hanya kelas, tetapi kelas khas yang objeknya perlu disimpan dalam pangkalan data.

Contoh:

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

Ini sudah cukup untuk Hibernate untuk merawat objek kelas ini dengan cara yang istimewa.

Anotasi kedua ialah @Table. Dengan bantuannya, anda boleh menetapkan nama jadual dalam pangkalan data yang akan dikaitkan dengan kelas ini. Contoh:

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

Jika nama kelas dan nama jadual adalah sama, maka anotasi @Tableboleh ditinggalkan.

Selain itu, jika aplikasi anda berfungsi dengan jadual daripada beberapa skema pada masa yang sama, maka anda perlu menentukan di mana skema tertentu jadual itu terletak:

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

Ya, semuanya semudah yang disangka.

2.2 @Anotasi lajur

Perkara kedua yang penting untuk diketahui ialah pemetaan lajur jadual ke medan kelas. Dalam versi paling mudah, Hibernate hanya akan memetakan medan kelas entiti anda ke lajur jadual yang dikehendaki.

Jika anda ingin mengawal semua nuansa pemetaan, anda boleh menggunakan anotasi @Column. Contoh:

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

Anotasi @Columnmempunyai pelbagai parameter, di bawah kami akan mempertimbangkan yang paling popular:

# Nama atribut Jenis atribut Penerangan
1 nama Tali Menetapkan nama lajur jadual untuk medan kelas
2 unik boolean Semua nilai medan mestilah unik
3 boleh batal boolean Medan boleh menjadi batal
4 panjang int Panjang maksimum (untuk rentetan)

Mari tambahkan beberapa kekangan pada medan kelas Entiti Pengguna kami:

  • nama pengguna mestilah unik dan tidak lebih daripada 100 aksara
  • tahap boleh jadi batal
  • CreatedDate tidak boleh batal

Kemudian anotasi kami menjadi:

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

Anda boleh mencipta objek jenis Pengguna dan juga menetapkan semua medan nol kepadanya, bagaimanapun, apabila anda cuba menyimpannya ke pangkalan data, Hibernate akan melakukan semakan, dan jika sebarang sekatan dilanggar, pengecualian akan dilemparkan.

2.3 Anotasi @Id

Dan satu lagi anotasi penting ialah @Id. Ia boleh digunakan untuk menetapkan kunci utama untuk jadual.

Anda hanya perlu menentukan anotasi ini untuk medan yang dikehendaki - dan Hibernate akan melakukan semuanya sendiri:

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

Jika anda mahu Hibernate menjana ID objek anda secara bebas apabila menambahkannya pada pangkalan data, maka anda perlu menambah satu lagi anotasi - @GeneratedValue. Kemudian contoh kami akan kelihatan seperti ini:

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

Kami meninggalkan anotasi @Columnuntuk medan id di sini, kerana ia tidak membawa maklumat berharga - nama medan dan nama lajur dalam jadual adalah sama, dan terima kasih kepada anotasi yang lain, Hibernate sudah memahami bahawa kita bercakap tentang jadual kolum.