२.१ भाष्य @Entity, @Table
जर तुम्हाला तुमचा वर्ग डेटाबेसमधील टेबलवर मॅप करायचा असेल, तर त्यासाठी तुम्हाला त्यात जास्तीत जास्त 3 भाष्ये जोडावी लागतील.
प्रथम, तुम्हाला वर्गात भाष्य जोडावे लागेल @Entity
. वर्गासमोर असलेले हे भाष्य हायबरनेटला सांगेल की हा फक्त एक वर्ग नाही तर एक विशेष वर्ग आहे ज्यांच्या वस्तू डेटाबेसमध्ये संग्रहित करणे आवश्यक आहे.
उदाहरण:
@Entity
class User {
public int id;
public String name;
public int level;
public Date createdDate;
}
हायबरनेटसाठी या वर्गाच्या वस्तूंना विशेष पद्धतीने हाताळण्यासाठी हे पुरेसे आहे.
दुसरे भाष्य आहे @Table
. त्याच्या मदतीने, आपण डेटाबेसमध्ये टेबलचे नाव सेट करू शकता ज्यासह हा वर्ग संबद्ध असेल. उदाहरण:
@Entity
@Table(name="user")
class User {
public int id;
public String name;
public int level;
public Date createdDate;
}
जर वर्गाचे नाव आणि टेबलचे नाव सारखे असेल तर भाष्य @Table
वगळले जाऊ शकते.
तसेच, जर तुमचा अनुप्रयोग एकाच वेळी अनेक स्कीमाच्या सारण्यांसह कार्य करत असेल, तर तुम्हाला टेबल कोणत्या विशिष्ट स्कीमामध्ये स्थित आहे हे निर्दिष्ट करणे आवश्यक आहे:
@Entity
@Table(name="user", schema="test")
class User {
public int id;
public String name;
public int level;
public Date createdDate;
}
होय, सर्वकाही दिसते तितके सोपे आहे.
२.२ @स्तंभ भाष्य
दुसरी महत्त्वाची गोष्ट म्हणजे टेबल कॉलम्सचे क्लास फील्डमध्ये मॅपिंग करणे. सर्वात सोप्या आवृत्तीमध्ये, हायबरनेट आपल्या घटक वर्गाच्या फील्डला इच्छित सारणीच्या स्तंभांमध्ये मॅप करेल.
आपण मॅपिंगच्या सर्व बारकावे नियंत्रित करू इच्छित असल्यास, आपण भाष्य वापरू शकता @Column
. उदाहरण:
@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;
}
भाष्यात @Column
विविध पॅरामीटर्स आहेत, खाली आम्ही त्यापैकी सर्वात लोकप्रिय विचार करू:
# | विशेषता नाव | विशेषता प्रकार | वर्णन |
---|---|---|---|
१ | नाव | स्ट्रिंग | वर्ग फील्डसाठी टेबल कॉलमचे नाव सेट करते |
2 | अद्वितीय | बुलियन | सर्व फील्ड मूल्ये अद्वितीय असणे आवश्यक आहे |
3 | रद्द करण्यायोग्य | बुलियन | फील्ड शून्य असू शकते |
4 | लांबी | int | कमाल लांबी (स्ट्रिंगसाठी) |
चला आमच्या वापरकर्ता घटक वर्गाच्या फील्डमध्ये काही मर्यादा जोडूया:
- वापरकर्तानाव अद्वितीय आणि 100 वर्णांपेक्षा मोठे नसावे
- पातळी शून्य असू शकते
- createDate शून्य असू शकत नाही
मग आमची भाष्ये बनतात:
@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;
}
तुम्ही वापरकर्ता प्रकाराचा एक ऑब्जेक्ट तयार करू शकता आणि त्यास सर्व शून्य फील्ड देखील नियुक्त करू शकता, तथापि, जेव्हा तुम्ही डेटाबेसमध्ये सेव्ह करण्याचा प्रयत्न कराल, तेव्हा हायबरनेट एक तपासणी करेल आणि कोणत्याही निर्बंधांचे उल्लंघन केल्यास, अपवाद फेकले जाईल.
2.3 @Id भाष्य
आणि आणखी एक महत्त्वाची भाष्य आहे @Id
. हे टेबलसाठी प्राथमिक की सेट करण्यासाठी वापरले जाऊ शकते .
आपल्याला फक्त इच्छित फील्डसाठी हे भाष्य निर्दिष्ट करण्याची आवश्यकता आहे - आणि हायबरनेट सर्वकाही स्वतः करेल:
@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;
}
तुम्हाला हायबरनेटने तुमच्या ऑब्जेक्टचे आयडी डेटाबेसमध्ये जोडताना स्वतंत्रपणे जनरेट करण्याची तुम्हाला इच्छा असल्यास , तुम्हाला आणखी एक भाष्य जोडावे लागेल - @GeneratedValue
. मग आमचे उदाहरण असे दिसेल:
@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;
}
@Column
आम्ही येथे आयडी फील्डसाठी भाष्य वगळले आहे , कारण त्यात मौल्यवान माहिती नाही - टेबलमधील फील्डचे नाव आणि स्तंभाचे नाव सारखेच आहेत आणि बाकीच्या भाष्यांबद्दल धन्यवाद, हायबरनेटला आधीच समजले आहे की आम्ही टेबलबद्दल बोलत आहोत. स्तंभ
GO TO FULL VERSION