हाइबरनेट - मैपिंग फाइलें
एक ऑब्जेक्ट / रिलेशनल मैपिंग को आमतौर पर एक XML दस्तावेज़ में परिभाषित किया जाता है। यह मैपिंग फ़ाइल हाइबरनेट को निर्देश देती है - डेटाबेस टेबल पर परिभाषित वर्ग या कक्षाओं को कैसे मैप करें?
हालाँकि कई हाइबरनेट उपयोगकर्ता XML को हाथ से लिखना चुनते हैं, लेकिन मैपिंग दस्तावेज़ को उत्पन्न करने के लिए कई उपकरण मौजूद हैं। इसमें शामिल हैXDoclet, Middlegen तथा AndroMDA उन्नत हाइबरनेट उपयोगकर्ताओं के लिए।
आइए हम अपने पहले से परिभाषित POJO वर्ग पर विचार करें, जिसकी वस्तुएं अगले भाग में परिभाषित तालिका में बनी रहेंगी।
public class Employee {
private int id;
private String firstName;
private String lastName;
private int salary;
public Employee() {}
public Employee(String fname, String lname, int salary) {
this.firstName = fname;
this.lastName = lname;
this.salary = salary;
}
public int getId() {
return id;
}
public void setId( int id ) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName( String first_name ) {
this.firstName = first_name;
}
public String getLastName() {
return lastName;
}
public void setLastName( String last_name ) {
this.lastName = last_name;
}
public int getSalary() {
return salary;
}
public void setSalary( int salary ) {
this.salary = salary;
}
}
प्रत्येक वस्तु के लिए एक तालिका होगी जो आप दृढ़ता प्रदान करने के लिए तैयार हैं। उपरोक्त वस्तुओं पर विचार करने के लिए निम्नलिखित RDBMS तालिका में संग्रहीत और पुनर्प्राप्त करने की आवश्यकता है -
create table EMPLOYEE (
id INT NOT NULL auto_increment,
first_name VARCHAR(20) default NULL,
last_name VARCHAR(20) default NULL,
salary INT default NULL,
PRIMARY KEY (id)
);
दो उपर्युक्त संस्थाओं के आधार पर, हम निम्नलिखित मैपिंग फ़ाइल को परिभाषित कर सकते हैं, जो हाइबरनेट को निर्देश देती है कि परिभाषित वर्ग या कक्षाओं को डेटाबेस तालिकाओं में कैसे मैप किया जाए।
<?xml version = "1.0" encoding = "utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name = "Employee" table = "EMPLOYEE">
<meta attribute = "class-description">
This class contains the employee detail.
</meta>
<id name = "id" type = "int" column = "id">
<generator class="native"/>
</id>
<property name = "firstName" column = "first_name" type = "string"/>
<property name = "lastName" column = "last_name" type = "string"/>
<property name = "salary" column = "salary" type = "int"/>
</class>
</hibernate-mapping>
आपको फ़ाइल को मैपिंग दस्तावेज़ को प्रारूप <classname> .hbm.xml के साथ सहेजना चाहिए। हमने Employee.hbm.xml फ़ाइल में अपना मैपिंग दस्तावेज़ सहेजा है।
आइए मैपिंग फ़ाइल में उपयोग किए जाने वाले मैपिंग तत्वों के बारे में थोड़ा विस्तार से देखें -
मैपिंग दस्तावेज़ एक XML दस्तावेज़ है <hibernate-mapping> मूल तत्व के रूप में, जिसमें सभी शामिल हैं <class> तत्वों।
<class>तत्वों का उपयोग जावा कक्षाओं से डेटाबेस तालिकाओं तक विशिष्ट मैपिंग को परिभाषित करने के लिए किया जाता है। जावा वर्ग नाम का उपयोग करके निर्दिष्ट किया गया हैname वर्ग तत्व और डेटाबेस की विशेषता table तालिका विशेषता का उपयोग करके नाम निर्दिष्ट किया गया है।
<meta> तत्व वैकल्पिक तत्व है और इसका उपयोग वर्ग विवरण बनाने के लिए किया जा सकता है।
<id>तत्व डेटाबेस तालिका के प्राथमिक कुंजी के लिए कक्षा में अद्वितीय आईडी विशेषता को मैप करता है। name आईडी तत्व की विशेषता वर्ग और में संपत्ति को संदर्भित करती है columnविशेषता डेटाबेस तालिका में कॉलम को संदर्भित करता है। type विशेषता हाइबरनेट मैपिंग प्रकार रखती है, यह मैपिंग प्रकार जावा से SQL डेटा प्रकार में परिवर्तित हो जाएगा।
<generator>आईडी तत्व के भीतर का तत्व प्राथमिक कुंजी मानों को स्वचालित रूप से उत्पन्न करने के लिए उपयोग किया जाता है। class जनरेटर तत्व की विशेषता को सेट किया गया है native सीतनिद्रा में होना या तो लेने के लिए identity, sequence, या hilo अंतर्निहित डेटाबेस की क्षमताओं के आधार पर प्राथमिक कुंजी बनाने के लिए एल्गोरिथ्म।
<property>डेटाबेस तालिका में कॉलम में जावा क्लास प्रॉपर्टी को मैप करने के लिए एलिमेंट का उपयोग किया जाता है। name तत्व की विशेषता वर्ग और संपत्ति में संपत्ति को संदर्भित करती है columnविशेषता डेटाबेस तालिका में कॉलम को संदर्भित करता है। type विशेषता हाइबरनेट मैपिंग प्रकार रखती है, यह मैपिंग प्रकार जावा से SQL डेटा प्रकार में परिवर्तित हो जाएगा।
अन्य विशेषताएँ और तत्व उपलब्ध हैं, जिनका उपयोग मैपिंग दस्तावेज़ में किया जाएगा और मैं अन्य हाइबरनेट संबंधित विषयों पर चर्चा करते हुए यथासंभव कवर करने का प्रयास करूँगा।