2.1 Anotasi @Entity, @Tabel

Jika Anda ingin memetakan kelas Anda ke tabel di database, maka untuk ini Anda perlu menambahkan sebanyak 3 anotasi ke dalamnya.

Pertama, Anda perlu menambahkan anotasi ke class @Entity. Anotasi di depan kelas ini akan memberi tahu Hibernate bahwa ini bukan hanya kelas, tetapi kelas khusus yang objeknya perlu disimpan dalam database.

Contoh:

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

Ini cukup bagi Hibernasi untuk memperlakukan objek kelas ini dengan cara khusus.

Anotasi kedua adalah @Table. Dengan bantuannya, Anda dapat mengatur nama tabel di database 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 tabel sama, maka anotasi @Tabledapat dihilangkan.

Selain itu, jika aplikasi Anda bekerja dengan tabel dari beberapa skema pada saat yang sama, maka Anda perlu menentukan di skema mana tabel tersebut berada:

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

Ya, semuanya sesederhana kelihatannya.

2.2 @Kolom anotasi

Hal penting kedua yang perlu diketahui adalah pemetaan kolom tabel ke bidang kelas. Dalam versi paling sederhana, Hibernate hanya akan memetakan bidang kelas entitas Anda ke kolom tabel yang diinginkan.

Jika Anda ingin mengontrol semua nuansa pemetaan, Anda dapat 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 @Columnmemiliki berbagai parameter, di bawah ini kami akan mempertimbangkan yang paling populer:

# Nama atribut Jenis atribut Keterangan
1 nama Rangkaian Menetapkan nama kolom tabel untuk bidang kelas
2 unik boolean Semua nilai bidang harus unik
3 nullable boolean Bidang dapat berupa nol
4 panjang int Panjang maksimum (untuk string)

Mari tambahkan beberapa batasan pada bidang kelas Entitas Pengguna kita:

  • nama pengguna harus unik dan tidak lebih dari 100 karakter
  • tingkat bisa nol
  • CreatedDate tidak boleh nol

Kemudian anotasi kita 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 dapat membuat objek bertipe Pengguna dan bahkan menetapkan semua bidang nol untuknya, namun, saat Anda mencoba menyimpannya ke database, Hibernasi akan melakukan pemeriksaan, dan jika ada batasan yang dilanggar, pengecualian akan dilemparkan.

2.3 anotasi @Id

Dan satu lagi anotasi penting adalah @Id. Ini dapat digunakan untuk mengatur kunci utama untuk sebuah tabel.

Anda hanya perlu menentukan anotasi ini untuk bidang yang diinginkan - dan Hibernasi 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 ingin Hibernate menghasilkan ID objek Anda secara mandiri saat menambahkannya ke database, maka Anda perlu menambahkan satu anotasi lagi - @GeneratedValue. Maka contoh kita akan terlihat 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 menghilangkan anotasi @Columnuntuk bidang id di sini, karena tidak membawa informasi berharga - nama bidang dan nama kolom dalam tabel adalah sama, dan berkat anotasi lainnya, Hibernate sudah memahami bahwa kita berbicara tentang tabel kolom.