kunci utama

kasedhiya

@anotasi id

Saben entitas Entitas ing Hibernate kudu nduweni kolom sing bakal dadi kunci utama: ngemot nilai unik kanggo kabeh obyek kelas iki. Biasane, kolom iki diwenehi anotasi karo @Id anotasi .

Formulir umum:

@Id
Class Name;

Tuladha:

@Entity
@Table(name="user")
class User
{
   @Id
   @Column(name="id")
   public Integer id;

   @Embedded
   public UserAddress address;

   @Column(name="created_date")
   public Date createdDate;
}

Penempatan anotasi

Miturut cara, sampeyan bisa nulis @Column anotasi ora mung kanggo kolom, nanging uga kanggo cara: kanggo getters utawa setters. Tuladha:

@Entity
@Table(name="user")
class User
{
    public Integer id;
    public Date createdDate;

   @Id
   @Column(name="id")
   public Integer getId() {
   	return this.id;
   }
   public void setId(Integer id)    {
  	this.id = id;
   }

   @Column(name="created_date")
   public Date getDate() {
  	return this.createdDate;
   }
   public void setCreatedDate(Date date) {
      this. createdDate = date;
   }
}

Pendekatan iki muncul nalika anotasi wiwit ditambahake ora mung ing kelas, nanging uga ing antarmuka. Antarmuka ora duwe lapangan kelas, nanging ana cara: getter lan setter. Hibernate ndhukung loro standar kasebut.

Penting! Yen kelas nduweni anotasi @Entity , banjur kabeh kolom kasebut dianggep minangka kolom terus-terusan dening Hibernate (kajaba ana anotasi @Transient sing ditemtokake ). Sanajan kolom kasebut ora ana anotasi: ing kasus iki, jeneng kolom dianggep padha karo jeneng kolom kelas.

Iki ngendi anotasi @Id nduweni peran penting. Yen anotasi diselehake ing lapangan kelas, banjur Hibernate bakal ndeleng jeneng lan jinis kolom kasebut. Yen anotasi @Id diselehake ing metode, banjur Hibernate bakal ndeleng jeneng lan jinis metode kasebut.

Tuladha 1:

@Entity
@Table(name="user")
class User
{
   @Id
    public Integer id;
    public Date createdDate;  //this field will be treated as if it had @Column(name=" createdDate ")

}

Tuladha 2:

@Entity
@Table(name="user")
class User
{
    public Integer id;
    public Date createdDate;

   @Id
   public Integer getId() {
   	return this.id;
   }
   public void setId(Integer id)    {
  	this.id = id;
   }

   public Date getDate() { //this field will be treated as if it had @Column(name=”date ”)
  	return this.createdDate;
   }
   public void setCreatedDate(Date date) {
  	this. createdDate = date;
   }

}

@GeneratedValue anotasi

Sampeyan bisa nemtokake id kanggo obyek anyar dhewe, utawa ninggalake iku ing sih saka Hibernate. Supaya Hibernate luwih ngerti carane nemtokake ID menyang obyek sampeyan, ana anotasi khusus:

@GeneratedValue

Anotasi iki biasane nandhani kolom sing padha karo anotasi @Id . Dheweke duwe 4 strategi penugasan ID:

  • OTOMATIS
  • TETENGER
  • URUTAN
  • TABEL

Conto anotasi kanthi strategi sing ditemtokake:

@Entity
@Table(name="user")
class User
{
    @Id
	@GeneratedValue(strategy = GenerationType.AUTO)
    public Integer id;

    public Date createdDate;
}

Yen ora ana nilai kebijakan sing ditemtokake, strategi AUTO bakal dipilih. Strategi AUTO tegese Hibernate bakal nemtokake ID kasebut dhewe, adhedhasar jinis data ing kolom ID.

Kenapa ing jinis? Ya, amarga jinis ID bisa beda banget, contone, String utawa GUID. Tuladha:

@Entity
@Table(name="user")
class User
{
    @Id
	@GeneratedValue
    public UUID id;

    public Date createdDate;
}

Cathetan: GUID ing Jawa diarani UUID, miturut sejarah. Lan Hibernate bisa ngasilake UUID unik kanggo obyek sampeyan yen sampeyan takon.

Macem-macem Strategi @GeneratedValue

Yen sampeyan nemtokake jinis GeneratedValue(strategi = GenerationType.IDENTITY) , banjur Hibernate utusan setelan ID menyang lapisan database. Biasane, iki nggunakake kolom kanthi label PRIMARY KEY, AUTOINCREMENT.

Nanging yen sampeyan pengin ID sampeyan unik lan digawe miturut algoritma khusus, sampeyan bisa nggunakake GeneratedValue (strategi = GenerationType.SEQUENCE) anotasi , contone:

@Entity
@Table(name="user")
public class User {
	@Id
	@GeneratedValue(generator = "sequence-generator")
	@GenericGenerator(
  	name = "sequence-generator",
  	strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
  	parameters = {
    	@Parameter(name = "sequence_name", value = "user_sequence"),
    	@Parameter(name = "initial_value", value = "4"),
    	@Parameter(name = "increment_size", value = "1")
    	}
	)
	private long userId;

	// ...
}

Ana akeh cara liyane kanggo nggawe ID. Contone, sampeyan bisa uga duwe kunci unik gabungan sing dumadi saka sawetara kolom. Lan nalika nulis obyek menyang database, sampeyan kudu ngisi kabeh kolom kasebut.

Aku ora bakal menehi wong kanthi rinci. Nanging, tujuan ceramah kita yaiku kanggo kenalan karo Hibernate, lan ora nyritakake maneh dokumentasi resmi.

Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar