CodeGym/Java Course/All lectures for MR purposes/प्राथमिक कळ

प्राथमिक कळ

उपलब्ध

@Id भाष्य

हायबरनेटमधील प्रत्येक एंटिटी एंटिटीमध्ये एक फील्ड असणे आवश्यक आहे जी प्राथमिक की असेल: त्यात या वर्गाच्या सर्व ऑब्जेक्टसाठी एक अद्वितीय मूल्य आहे. सामान्यतः, हे फील्ड @Id भाष्याने भाष्य केले जाते .

सामान्य फॉर्म:

@Id
Class Name;

उदाहरण:

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

   @Embedded
   public UserAddress address;

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

भाष्य प्लेसमेंट

तसे, तुम्ही @Column भाष्ये केवळ फील्डसाठीच नाही तर पद्धतींसाठी देखील लिहू शकता: गेटर्स किंवा सेटर्ससाठी. उदाहरण:

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

जेव्हा केवळ वर्गांमध्येच नव्हे तर इंटरफेसमध्ये देखील भाष्ये जोडली जाऊ लागली तेव्हा हा दृष्टिकोन दिसून आला. इंटरफेसमध्ये वर्ग फील्ड नाहीत, परंतु पद्धती आहेत: गेटर्स आणि सेटर. हायबरनेट या दोन्ही मानकांना समर्थन देते.

महत्वाचे! जर एखाद्या वर्गात @Entity भाष्य असेल , तर त्याची सर्व फील्ड Hibernate द्वारे पर्सिस्टंट फील्ड म्हणून मानली जातात (जोपर्यंत @Transient भाष्य निर्दिष्ट केलेले नसेल ). जरी फील्डमध्ये कोणतीही भाष्ये नसली तरीही: या प्रकरणात, स्तंभाचे नाव वर्ग फील्ड नावाच्या समान मानले जाते.

इथेच @Id भाष्य महत्त्वाची भूमिका बजावते. जर भाष्य वर्ग फील्डवर ठेवले असेल, तर हायबरनेट फील्डची नावे आणि प्रकार पाहतील. जर @Id भाष्य पद्धतीवर ठेवले असेल, तर हायबरनेट पद्धतींची नावे आणि प्रकार पाहतील.

उदाहरण १:

@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 ")

}

उदाहरण २:

@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 भाष्य

तुम्ही तुमच्या नवीन वस्तूंना स्वतः आयडी नियुक्त करू शकता किंवा हायबरनेटच्या दयेवर सोडू शकता. हायबरनेटला तुमच्या ऑब्जेक्ट्सना आयडी कसे नियुक्त करायचे हे चांगल्या प्रकारे समजून घेण्यासाठी, त्यात एक विशेष भाष्य आहे:

@GeneratedValue

हे भाष्य सहसा @Id भाष्य सारखे फील्ड चिन्हांकित करते . तिच्याकडे 4 संभाव्य आयडी असाइनमेंट धोरणे आहेत:

  • ऑटो
  • ओळख
  • क्रम
  • टेबल

निर्दिष्ट धोरणासह भाष्याचे उदाहरण:

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

    public Date createdDate;
}

कोणतेही धोरण मूल्य निर्दिष्ट केले नसल्यास, ऑटो धोरण निवडले जाईल. AUTO रणनीतीचा अर्थ असा आहे की हायबरनेट स्वतः ID नियुक्त करेल, प्रामुख्याने ID फील्डच्या डेटा प्रकारावर आधारित.

टाइपवर का? होय, कारण आयडी प्रकार खूप भिन्न असू शकतात, उदाहरणार्थ, स्ट्रिंग किंवा GUID. उदाहरण:

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

    public Date createdDate;
}

टीप: जावामधील GUID ला ऐतिहासिकदृष्ट्या UUID म्हणतात. आणि तुम्ही विचारल्यास हायबरनेट तुमच्या वस्तूंसाठी अद्वितीय UUID तयार करू शकते.

विविध @GeneratedValue धोरणे

तुम्ही GeneratedValue(strategy = GenerationType.IDENTITY) हा प्रकार निर्दिष्ट केल्यास , हायबरनेट आयडी सेटिंग डेटाबेस स्तरावर सोपवते. सामान्यतः, हे प्राथमिक की, ऑटोइनक्रिमेंट असे लेबल असलेला स्तंभ वापरते.

परंतु तुम्‍हाला तुमच्‍या आयडी अद्वितीय आणि विशिष्ट अल्गोरिदमनुसार जनरेट करण्‍याची इच्छा असल्‍यास, तुम्ही GeneratedValue (strategy = GenerationType.SEQUENCE) भाष्य वापरू शकता , उदाहरणार्थ:

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

	// ...
}

आयडी तयार करण्याचे आणखी बरेच मार्ग आहेत. उदाहरणार्थ, तुमच्याकडे अनेक स्तंभांचा समावेश असलेली संयुक्त अद्वितीय की असू शकते. आणि डेटाबेसमध्ये ऑब्जेक्ट लिहिताना, आपल्याला हे सर्व कॉलम भरणे आवश्यक आहे.

मी त्यांना तपशीलवार देणार नाही. तरीही, आमच्या व्याख्यानांचा उद्देश हायबरनेटशी परिचित होणे हा आहे आणि अधिकृत कागदपत्रे पुन्हा सांगणे नाही.

टिप्पण्या
  • लोकप्रिय
  • नवीन
  • जुने
टिप्पणी करण्यासाठी तुम्ही साईन इन केलेले असणे आवश्यक आहे
या पानावर अजून कोणत्याही टिप्पण्या नाहीत