2.1 Açıklama @Entity, @Table

Sınıfınızı veritabanındaki bir tabloya eşlemek istiyorsanız, bunun için tabloya en fazla 3 ek açıklama eklemeniz gerekir.

İlk olarak, sınıfa bir ek açıklama eklemeniz gerekir @Entity. Sınıfın önündeki bu ek açıklama, Hibernate'e bunun sadece bir sınıf değil, nesneleri veritabanında saklanması gereken özel bir sınıf olduğunu söyleyecektir.

Örnek:

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

Bu, Hibernate'in bu sınıftaki nesneleri özel bir şekilde ele alması için yeterlidir.

İkinci açıklama ise @Table. Yardımı ile, bu sınıfın ilişkilendirileceği veritabanındaki tablonun adını belirleyebilirsiniz. Örnek:

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

Sınıf adı ve tablo adı aynıysa, ek açıklama @Tableatlanabilir.

Ayrıca, uygulamanız aynı anda birkaç şemadaki tablolarla çalışıyorsa, tablonun hangi şemada yer aldığını belirtmeniz gerekir:

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

Evet, her şey göründüğü kadar basit.

2.2 @Column notu

Bilinmesi gereken ikinci önemli şey, tablo sütunlarının sınıf alanlarına eşlenmesidir. En basit sürümde, Hibernate varlık sınıfınızın alanlarını istenen tablonun sütunlarıyla eşler.

Haritalamanın tüm nüanslarını kontrol etmek istiyorsanız, ek açıklamayı kullanabilirsiniz @Column. Örnek:

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

Ek açıklamanın @Columnçeşitli parametreleri vardır, aşağıda en popülerlerini ele alacağız:

# Özellik adı Öznitelik türü Tanım
1 isim Sicim Sınıf alanı için tablo sütun adını ayarlar
2 eşsiz mantıksal Tüm alan değerleri benzersiz olmalıdır
3 null yapılabilir mantıksal alan boş olabilir
4 uzunluk int Maksimum uzunluk (dizeler için)

User Entity sınıfımızın alanlarına bazı kısıtlamalar ekleyelim:

  • kullanıcı adı benzersiz olmalı ve 100 karakterden uzun olmamalıdır
  • seviye boş olabilir
  • createDate boş olamaz

Ardından ek açıklamalarımız şöyle olur:

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

User türünde bir nesne oluşturabilir ve hatta tüm boş alanları ona atayabilirsiniz, ancak onu veritabanına kaydetmeye çalıştığınızda Hibernate bir kontrol gerçekleştirir ve herhangi bir kısıtlama ihlal edilirse bir istisna atılır.

2.3 @Id notu

Ve bir diğer önemli açıklama ise @Id. Bir tablo için birincil anahtarı ayarlamak için kullanılabilir .

İstediğiniz alan için bu notu belirtmeniz yeterlidir - ve Hazırda Bekletme her şeyi kendisi yapacaktır:

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

Hibernate'in nesnelerinizi veritabanına eklerken kimliklerini bağımsız olarak oluşturmasını istiyorsanız , bir açıklama daha eklemeniz gerekir - @GeneratedValue. O zaman örneğimiz şöyle görünecektir:

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

id@Column alanı için ek açıklamayı burada atladık , çünkü değerli bilgiler taşımaz - tablodaki alan adı ve sütun adı aynıdır ve geri kalan ek açıklamalar sayesinde Hibernate, bir tablodan bahsettiğimizi zaten anlar. kolon.