تعيين
مجموعة التجميع هي مجموعة Java التي لا تحتوي على أي عناصر مكررة. بشكل أكثر رسمية ، لا تحتوي SET على أي عناصر على E1 و E2 ، بحيث e1.equals (e2) ، وعنصر فارغ واحد على الأكثر. لذلك يجب إضافتها إلى مجموعة من الكائنات ، يجب أن تنفذ أساليب متساوية () و hashcode () حتى تتمكن Java من تحديد ما إذا كان أي عنصرين/كائنات متماثلان.
يتم تعيين مجموعات إلى <tet> عناصر في جدول الخريطة ويتم تهيئتها في java.util.hashset. يمكنك استخدام مجموعة مجموعات للحصول على عناصر في المجموعة التي لا تحتاج إلى تكرارها عند استخدام الفصل.
تحديد جدول RDBMS:
النظر في حالة نحتاج فيها لتخزين سجلات الموظفين لدينا في جدول الموظف ، مع الهيكل التالي:
قم بإنشاء موظف الجدول (ID int not null auto_increment ، first_name varchar (20) الافتراضي ، last_name varchar (20) الافتراضي ، الراتب الافتراضي الفارغ ، المفتاح الأساسي (المعرف)) ؛
علاوة على ذلك ، من المفترض أن يكون لكل موظف شهادة أو أكثر من الشهادات المتعلقة به. لذلك ، نقوم بتخزين المعلومات ذات الصلة للشهادة في جدول منفصل مع الهيكل التالي:
إنشاء شهادة الجدول (ID int not null auto_increment ، certificate_name varchar (30) default null ، exeriee_id int default null ، key key (id)) ؛
ستكون هناك علاقة بين موظف إلى حد كبير وكائن شهادة:
تعريف فئة Pojo:
دعنا نطبق موظفي فئة POJO لدينا للاحتفاظ بمجموعة من الكائنات في جدول الموظفين ومتغيرات المجموعة المعتمدة.
استيراد java.util.*؛ موظف الطبقة العامة {private int id ؛ سلسلة خاصة firstName ؛ سلسلة خاصة راتب الباحث الخاص ؛ شهادات مجموعة خاصة ؛ الموظف العام () {} الموظف العام (سلسلة fname ، سلسلة lname ، int راتب) {this.firstName = fname ؛ this.lastname = lname ؛ هذا. } public int getId () {return id ؛ } public void setId (int id) {this.id = id ؛ } السلسلة العامة getFirstName () {return firstName ؛ } public void setFirstName (string first_name) {this.firstName = first_name ؛ } السلسلة العامة 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 ؛ } مجموعة عامة getCertificates () {شهادات الإرجاع ؛ } public void setCertificates (set issionates) {this.certificates = issistations ؛ }} الآن دعنا نحدد شهادة فئة Pojo أخرى تقابل الجدول ، يمكن لهذا الكائن الشهادة تخزين واسترداد جدول الشهادة. يجب أن تنفذ هذه الفئة أيضًا أساليب متساوية () و hashcode () في نفس الوقت ، بحيث يمكن لـ Java تحديد ما إذا كان أي عنصرين/كائنتين متماثلين.
شهادة الفئة العامة {private int id ؛ اسم السلسلة الخاصة ؛ الشهادة العامة () {} الشهادة العامة (اسم السلسلة) {this.name = name ؛ } public int getId () {return id ؛ } public void setId (int id) {this.id = id ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } منطقية عامة تساوي (كائن obj) {if (obj == null) إرجاع false ؛ if (! this.getClass (). يساوي (obj.getClass ())) إرجاع خطأ ؛ شهادة OBJ2 = (شهادة) OBJ ؛ if ((this.id == obj2.getId ()) && (this.name.equals (obj2.getName ()))) {return true ؛ } إرجاع خطأ ؛ } public int hashcode () {int tmp = 0 ؛ tmp = (id + name) .hashCode () ؛ إرجاع TMP ؛ }} تحديد ملف تعيين السبات:
دعنا نطور ملف رسم الخرائط الذي يحدد كيفية تعريف السباتي على ملف رسم الخرائط الذي يقوم بتعيين جدول قاعدة البيانات. سيتم استخدام العنصر <stip> لتحديد القواعد المستخدمة لتعيين المجموعة.
<؟ Table = "Employee"> <meta attribute = "class-description"> تحتوي هذه الفئة على تفاصيل الموظف. </meta> <name name = "id" type = "int" column = "id"> <generator/> </id> <set name = "cASCADE =" all "> <key column =" exepmite_id "/> <-to-many/> </set> <property name =" firstname "colum =" first_name "type = type = "string"/> <property name = "salary" column = "salary" type = "int"/> </class> <class name = "certificate" table = "certificate"> <meta attribute = "class-description"> تحتوي هذه الفئة على سجلات الشهادة. </meta> <id name = "id" type = "int" column = "id"> <eredator/> </id> <property name = "name" column = "certificate_name" type = "string"/> </slass> </ hibernate mapping>
التنسيق <SlassName> .hbm.xml في ملف التعيين الذي يجب حفظه. احفظ الملف الموظف. hbm.xml في ملف التعيين. على دراية بالفعل بمعظم تفاصيل التعيين ، قم بتخطيط جميع العناصر في الملف:
المستند المعين هو مستند XML مع <hibernate mapping> كعنصر جذر يتوافق مع كل فئة تحتوي على 2 <Class> عناصر.
يتم استخدام عنصر <Slass> لتحديد تعيين جدول قاعدة البيانات من فئة Java. يحدد اسم فئة Java سمة الاسم لعنصر الفئة ويحدد اسم جدول قاعدة بيانات سمة الجدول.
عنصر <meta> هو عنصر اختياري يمكن استخدامه لإنشاء وصف للفصل.
يقوم عنصر <ID> بتخطيط سمة المعرف الفريد في الفصل إلى المفتاح الأساسي لجدول قاعدة البيانات. تشير سمة اسم عنصر المعرف إلى فئة السمة وتشير سمة العمود إلى الأعمدة في جدول قاعدة البيانات. تقوم سمة النوع بحفظ نوع تعيين السبات ، والذي سيتم تحويله من جافا إلى نوع بيانات SQL.
يتم استخدام عنصر <enderator> داخل عنصر المعرف لإنشاء قيمة المفتاح الأساسي تلقائيًا. قم بتعيين سمة الفصل للعنصر الذي تم إنشاؤه إلى العنصر الأصلي للسماح لـ Hibernate بالتقاطه ، إما الهوية أو التسلسل أو خوارزمية Hilo لإنشاء مفاتيح أساسية وفقًا لقدرات الدعم لقاعدة البيانات الأساسية.
يتم استخدام العنصر <Property> لتعيين خصائص فئة Java إلى أعمدة في جدول قاعدة البيانات. تشير سمة اسم العنصر إلى فئة السمة وتشير سمة العمود إلى الأعمدة في جدول قاعدة البيانات. تقوم سمة النوع بحفظ نوع تعيين السبات ، والذي سيتم تحويله من جافا إلى نوع بيانات SQL.
العنصر <stip> جديد وقد تم تقديمه لتعيين العلاقة بين الشهادة وفئة الموظفين. نستخدم العنصر <stip> في سمة Cascade لإخبار Hibernate بحفظ كائن الشهادة وكائن الموظف. تم تعيين سمة الاسم لتعيين المتغير في التعريف في الفئة الأصل ، في حالتنا هي الشهادة. لكل مجموعة من المتغيرات ، نحتاج إلى تحديد مجموعة منفصلة من العناصر في ملف التعيين.
العنصر <Kear> هو الكائن الأصل الذي يحتوي على مفتاح خارجي ، أي العمود في جدول الشهادة. موظف الجدول.
يشير العنصر <No-to-Many> إلى أن كائن الموظف يتضمن العديد من الشهادات ، وبالتالي ، يجب أن يكون كائن الشهادة مرتبطًا بالموظف الأصل. يمكنك استخدام أي من عناصر <و On-One> ، <العديد إلى واحد> أو <العديد من العناصر> حسب الحاجة.
إنشاء فئة تطبيق:
أخيرًا ، سنقوم بإنشاء الطريقة الرئيسية () لفئة التطبيق لتشغيل التطبيق. سنستخدم هذا التطبيق لحفظ بعض سجلات الموظفين مع بيانات الاعتماد ، وبعد ذلك سنقوم بطلب للحصول على سجلات في عملية CRUD.
استيراد java.util.*؛ استيراد org.hibernate.hibernateException ؛ استيراد org.hibernate.session ؛ استيراد org.hibernate.transaction ؛ استيراد org.hibernate.sessionfactory ؛ استيراد org.hibernate.cfg.configuration ؛ الطبقة العامة إدارة {Private Static SessionFactory Factory ؛ public static void main (string [] args) {try {factory = new configuration (). configure (). BuildSessionFactory () ؛ } catch (throwable ex) {system.err.println ("فشل في إنشاء كائن SessionFactory." + ex) ؛ رمي استثناء جديد initializererror (ex) ؛ } managementemive me = new ManagementEmployee () ؛ / * دعنا نحصل على مجموعة من الشهادات للموظف الأول */ hashset set1 = new hashset () ؛ set1.add (شهادة جديدة ("MCA")) ؛ set1.add (شهادة جديدة ("ماجستير في إدارة الأعمال")) ؛ set1.add (شهادة جديدة ("ماجستير في إدارة الأعمال")) ؛ set1.add (شهادة جديدة ("PMP")) ؛ / * إضافة سجلات الموظفين في قاعدة البيانات */ integer empid1 = me.addemplyee ("manoj" ، "kumar" ، 4000 ، set1) ؛ / * مجموعة أخرى من الشهادات للموظف الثاني */ hashset set2 = new hashset () ؛ set2.add (شهادة جديدة ("BCA")) ؛ set2.add (شهادة جديدة ("BA")) ؛ / * إضافة سجل موظف آخر في قاعدة البيانات */ integer EMPID2 = ME.Addemplyee ("Dilip" ، "Kumar" ، 3000 ، set2) ؛ / * اذكر جميع الموظفين */ me.listemplyee () ؛ / * تحديث سجلات رواتب الموظف */ me.updateemplyee (Empid1 ، 5000) ؛ / * حذف موظف من قاعدة البيانات */ me.deleteemplyee (EMPID2) ؛ / * اذكر جميع الموظفين */ me.listemplyee () ؛ } / * طريقة لإضافة سجل موظف في قاعدة البيانات * / public Integer Addemployee (السلسلة fname ، سلسلة lname ، int salary ، set cert) {session session = factory.opensession () ؛ المعاملة tx = فارغة ؛ عدد صحيح الموظف = فارغ ؛ حاول {tx = session.begintransaction () ؛ الموظف الموظف = موظف جديد (fname ، lname ، الراتب) ؛ الموظف. effereneiD = (عدد صحيح) الجلسة. save (موظف) ؛ tx.Commit () ؛ } catch (hibernateException e) {if (tx! = null) tx.rollback () ؛ E.PrintStackTrace () ؛ } أخيرًا {session.close () ؛ } إرجاع الموظف ؛ } / * طريقة لسرد جميع تفاصيل الموظفين * / public void listemployees () {session session = factory.opensession () ؛ المعاملة tx = فارغة ؛ حاول {tx = session.begintransaction () ؛ قائمة الموظفين = session.createquery ("من الموظف"). list () ؛ لـ (iterator iterator1 = amploy.iterator () ؛ iterator1.hasNext () ؛) {efferene efference = (amployee) iterator1.next () ؛ system.out.print ("الاسم الأول:" + efferene.getFirstName ()) ؛ system.out.print ("الاسم الأخير:" + efferene.getLastName ()) ؛ System.out.println ("Salary:" + efferene.getSalary ()) ؛ تعيين الشهادات = exearcee.getCertificates () ؛ لـ (iterator iterator2 = issities.iterator () ؛ iterator2.hasNext () ؛) {certtName = (شهادة) iterator2.next () ؛ System.out.println ("الشهادة:" + certname.getName ()) ؛ }} tx.commit () ؛ } catch (hibernateException e) {if (tx! = null) tx.rollback () ؛ E.PrintStackTrace () ؛ } أخيرًا {session.close () ؛ }} / * طريقة تحديث الراتب للموظف * / public void uptordeMployee (integer amployeeId ، int salary) {session session = factory.opensession () ؛ المعاملة tx = فارغة ؛ حاول {tx = session.begintransaction () ؛ موظف الموظف = (الموظف) جلسة. الموظف. session.update (الموظف) ؛ tx.Commit () ؛ } catch (hibernateException e) {if (tx! = null) tx.rollback () ؛ E.PrintStackTrace () ؛ } أخيرًا {session.close () ؛ }} / * طريقة لحذف موظف من السجلات * / public void deleteemployee (integer efferenceId) {session session = factory.opensession () ؛ المعاملة tx = فارغة ؛ حاول {tx = session.begintransaction () ؛ موظف الموظف = (الموظف) جلسة. Session.delete (موظف) ؛ tx.Commit () ؛ } catch (hibernateException e) {if (tx! = null) tx.rollback () ؛ E.PrintStackTrace () ؛ } أخيرًا {session.close () ؛ }}} تجميع وتنفيذ:
فيما يلي الخطوات لتجميع وتشغيل التطبيق أعلاه. تأكد من تعيين المسار و classpath بشكل مناسب قبل التجميع والتنفيذ.
سيتم الحصول على النتائج التالية على الشاشة وسيتم إنشاء السجلات في جداول الموظف والشهادات.
$ Java ManagementEmployee
..... ستعرض رسائل السجل المختلفة هنا ......... الاسم الأول: Manoj الاسم الأخير: كومار الراتب: 4000Certificate: MbacerTificate: PMPCertificate: McAfirst الاسم: الاسم العلاط: kumar الراتب: 5000Certificate: mbacertificate: bafirst الاسم: الاسم الأخير: kumar salary:
إذا قمت بفحص نموذج الموظف والشهادة ، فيجب عليك تسجيله:
MySQL> حدد * من الموظف ؛
+----------------------------+----------+| معرف | first_name | last_name | الراتب |+------------------------------------+------------+-----------+| 1 | مانوج | كومار | 5000 |+--------------------------------+---------+صف واحد في المجموعة (0.00 ثانية)
MySQL> حدد * من الشهادة ؛
+----+------------------+-------------+| معرف | شهادة _name | effectee_id |+----+------------------+-------------+| 1 | ماجستير في إدارة الأعمال | 1 || 2 | PMP | 1 || 3 | MCA | 1 |+----+------------------+-------------+3 صفوف في المجموعة (0.00 ثانية)
mysql>
sortedset
sortedSet هي مجموعة Java التي لا تحتوي على أي عناصر وعناصر مكررة تستخدم ترتيبها الطبيعي ، أو يتم فرزها بواسطة المقارنة.
خريطة sortedSet ، تهيئتها في جدول التعيين <sted> العنصر و java.util.treeset. يمكن ضبط سمة الفرز على المقارنة أو الترتيب الطبيعي. إذا تم استخدام الترتيب الطبيعي ، فإن تكراره يعبر عناصر المجموعة المرتبة بالترتيب الصاعد.
ما زلنا نستخدم جدول RDBMS المحدد في المثال أعلاه ، وستكون هناك علاقة بين العديد من كائنات الموظف والشهادات ، كما تم تعريف فئة POJO أعلاه.
دعنا ننفذ موظف فئة POJO سيتم استخدام مجموعة من الكائنات في جدول الموظف ومتغير فرز معتمد.
الآن دعنا نحدد الشهادة لفئة POJO أخرى تقابل جدول الشهادة ، يمكن لهذا الكائن الشهادة تخزين واسترداد جدول الشهادة. يجب أن تنفذ هذه الفئة أيضًا الواجهة المماثلة وسيتم استخدام طريقة المقارنة لتعيين Sort = "Natural" في حالة تعيين ملفات (انظر ملفات MAP أدناه) ، يتم فرز العناصر.
شهادة الفئة العامة تنفذ قابلة للمقارنة <figate> {private int id ؛ اسم السلسلة الخاصة ؛ الشهادة العامة () {} الشهادة العامة (اسم السلسلة) {this.name = name ؛ } public int getId () {return id ؛ } public void setId (int id) {this.id = id ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } public int compareto (شهادة) {final int قبل = -1 ؛ int النهائي بعد = 1 ؛ if (that == null) {return من قبل ؛ } thisCertificate = this.getName () ؛ مماثلة thatsecertificate = that.getName () ؛ if (thisCertificate == null) {return after ؛ } آخر if (thatSertificate == NULL) {return من قبل ؛ } else {return thisCertificate.compareto (thatsecertificate) ؛ }}} تحديد ملف تعيين السبات:
دعنا نطور ملف رسم الخرائط الذي يحدد كيفية تعريف السباتي على ملف رسم الخرائط الذي يقوم بتعيين جدول قاعدة البيانات. سيتم استخدام عنصر <stf> لتحديد قواعد مجموعة SortedSet المستخدمة.
<؟ Table = "Employee"> <meta attribute = "class-description"> تحتوي هذه الفئة على تفاصيل الموظف. </meta> <name name = "id" type = "int" column = "id"> <generator/> </id> <set name = "شهادات" cascade = "all" sort = "myClass"> <key column = "exepmiteee_id"/> <to to many/> </set> <sproperal name = "firstName" = column = "last_name" type = "string"/> <property name = "salary" column = "salary" type = "int"/> </class> <class name = "certificate" table = "certificate"> <meta attribute = "class-description"> تحتوي هذه الفئة على سجلات الشهادة. </meta> <id name = "id" type = "int" column = "id"> <eredator/> </id> <property name = "name" column = "certificate_name" type = "string"/> </slass> </ hibernate mapping>
التنسيق <SlassName> .hbm.xml في ملف الخريطة ، احفظ الملف الموظف. hbm.xml في ملف الخريطة. لقد كنت بالفعل على دراية بمعظم تفاصيل التعيين ، ولكن دعنا نرى جميع العناصر في ملف التعيين:
المستند المعين هو مستند XML مع <hibernate mapping> كعنصر جذر يتوافق مع كل فئة تحتوي على 2 <Class> عناصر.
يتم استخدام عنصر <Slass> لتحديد تعيين جدول قاعدة البيانات من فئة Java. يحدد اسم فئة Java سمة الاسم لعنصر الفئة ويحدد اسم جدول قاعدة بيانات سمة الجدول.
عنصر <meta> هو عنصر اختياري يمكن استخدامه لإنشاء وصف للفصل.
يقوم عنصر <ID> بتخطيط سمة المعرف الفريد في الفصل إلى المفتاح الأساسي لجدول قاعدة البيانات. تشير سمة اسم عنصر المعرف إلى فئة السمة وتشير سمة العمود إلى الأعمدة في جدول قاعدة البيانات. تقوم سمة النوع بحفظ نوع تعيين السبات ، والذي سيتم تحويله من جافا إلى نوع بيانات SQL.
يتم استخدام عنصر <enderator> داخل عنصر المعرف لإنشاء قيمة المفتاح الأساسي تلقائيًا. قم بتعيين سمة الفصل للعنصر الذي تم إنشاؤه للسماح لـ Hibernate بالتقاط الخوارزمية في الهوية أو التسلسل أو Hilo لإنشاء مفاتيح أساسية وفقًا لقدرات الدعم لقاعدة البيانات الأساسية.
يتم استخدام العنصر <Property> لتعيين خصائص فئة Java إلى أعمدة في جدول قاعدة البيانات. تشير سمة اسم العنصر إلى فئة السمة وتشير سمة العمود إلى الأعمدة في جدول قاعدة البيانات. تقوم سمة النوع بحفظ نوع تعيين السبات ، والذي سيتم تحويله من جافا إلى نوع بيانات SQL.
يتم استخدام العنصر <stip> لتعيين العلاقة بين الشهادة وفئة الموظف. نستخدم العنصر <stip> في سمة Cascade لإخبار Hibernate لحفظ كائن الشهادة ، وأيضًا إلى كائن الموظف. يتم تعيين سمة الاسم على متغير sortedset المحدد في الفئة الأصل ، في حالتنا هي شهادة. يمكن تعيين خاصية الفرز على الفرز الطبيعي ، أو يمكن ضبطها على تنفيذ الفئة المخصصة مثل java.util.comparator. لقد استخدمنا myClass فئة تنفذها على أنها java.util.comparator لعكس ترتيب الفرز لتنفيذ فئة الشهادة.
العنصر <Kear> هو الكائن الأصل الذي يحتوي على مفتاح خارجي ، أي العمود في جدول الشهادة. موظف الجدول.
يشير العنصر <No-to-Many> إلى أن كائن الموظف يتضمن العديد من كائنات الشهادة ، وبالتالي ، يجب أن يكون كائن الشهادة مرتبطًا بالموظف الأصل. يمكنك استخدام أي من عناصر <و On-One> ، <العديد إلى واحد> أو <العديد من العناصر> حسب الحاجة.
إذا كنت تستخدم إعداد SORT = "طبيعي" ، فأنت لا تحتاج إلى إنشاء فئة منفصلة ، لأن فئة الشهادة قد نفذت الواجهة المماثلة وستستخدم السبات المقارنة (المعرّفة كاسم شهادة المقارنة في فئة الشهادة). ومع ذلك ، فإننا نستخدم MyClass من فئة المقارنة المخصصة في ملف التعيين الخاص بنا ، لذلك يجب علينا إنشاء هذه الفئة بناءً على خوارزمية الفرز. استخدم هذا الفصل لفرز الترتيب التنازلي.
استيراد java.util.comparator ؛ الفئة العامة myClass تنفذ المقارنة <SEGINET> {public int مقارنة (الشهادة O1 ، الشهادة O2) {Final int قبل = -1 ؛ int النهائي بعد = 1 ؛ / * لعكس ترتيب الفرز ، متعددة من خلال -1 */ if (o2 == null) {return قبل * -1 ؛ } thisCertificate = o1.getName () ؛ مماثلة thatsercifificate = o2.getName () ؛ if (thisCertificate == null) {return After * 1 ؛ } آخر if (thatserycertificate == null) {return قبل * -1 ؛ } else {return thisCertificate.compareto (thatsecertificate) * -1 ؛ }}} إنشاء فئة تطبيق:
أخيرًا ، سنقوم بإنشاء الطريقة الرئيسية () لفئة التطبيق لتشغيل التطبيق. سنستخدم هذا التطبيق لحفظ بعض سجلات الموظفين إلى جانب الشهادة ، وبعد ذلك سنقوم بطلب للحصول على سجلات في عملية CRUD.
استيراد java.util.*؛ استيراد org.hibernate.hibernateException ؛ استيراد org.hibernate.session ؛ استيراد org.hibernate.transaction ؛ استيراد org.hibernate.sessionfactory ؛ استيراد org.hibernate.cfg.configuration ؛ الطبقة العامة إدارة {Private Static SessionFactory Factory ؛ public static void main (string [] args) {try {factory = new configuration (). configure (). BuildSessionFactory () ؛ } catch (throwable ex) {system.err.println ("فشل في إنشاء كائن SessionFactory." + ex) ؛ رمي استثناء جديد initializererror (ex) ؛ } managementemive me = new ManagementEmployee () ؛ / * دعنا نحصل على مجموعة من الشهادات للموظف الأول */ Treeset Set1 = New Treeset () ؛ set1.add (شهادة جديدة ("MCA")) ؛ set1.add (شهادة جديدة ("ماجستير في إدارة الأعمال")) ؛ set1.add (شهادة جديدة ("ماجستير في إدارة الأعمال")) ؛ set1.add (شهادة جديدة ("PMP")) ؛ / * إضافة سجلات الموظفين في قاعدة البيانات */ integer empid1 = me.addemplyee ("manoj" ، "kumar" ، 4000 ، set1) ؛ / * مجموعة أخرى من الشهادات للموظف الثاني */ treeset set2 = New Treeset () ؛ set2.add (شهادة جديدة ("BCA")) ؛ set2.add (شهادة جديدة ("BA")) ؛ / * إضافة سجل موظف آخر في قاعدة البيانات */ integer EMPID2 = ME.Addemplyee ("Dilip" ، "Kumar" ، 3000 ، set2) ؛ / * اذكر جميع الموظفين */ me.listemplyee () ؛ / * تحديث سجلات رواتب الموظف */ me.updateemplyee (Empid1 ، 5000) ؛ / * حذف موظف من قاعدة البيانات */ me.deleteemplyee (EMPID2) ؛ / * اذكر جميع الموظفين */ me.listemplyee () ؛ } / * طريقة لإضافة سجل موظف في قاعدة البيانات * / public Integer Addemployee (سلسلة fname ، سلسلة lname ، int راتب ، sortedset cert) {جلسة الجلسة = factory.opensession () ؛ المعاملة tx = فارغة ؛ عدد صحيح الموظف = فارغ ؛ حاول {tx = session.begintransaction () ؛ الموظف الموظف = موظف جديد (fname ، lname ، الراتب) ؛ الموظف. effereneiD = (عدد صحيح) الجلسة. save (موظف) ؛ tx.Commit () ؛ } catch (hibernateException e) {if (tx! = null) tx.rollback () ؛ E.PrintStackTrace () ؛ } أخيرًا {session.close () ؛ } إرجاع الموظف ؛ } / * طريقة لسرد جميع تفاصيل الموظفين * / public void listemployees () {session session = factory.opensession () ؛ المعاملة tx = فارغة ؛ حاول {tx = session.begintransaction () ؛ قائمة الموظفين = session.createquery ("من الموظف"). list () ؛ لـ (iterator iterator1 = amploy.iterator () ؛ iterator1.hasNext () ؛) {efferene efference = (amployee) iterator1.next () ؛ system.out.print ("الاسم الأول:" + efferene.getFirstName ()) ؛ system.out.print ("الاسم الأخير:" + efferene.getLastName ()) ؛ System.out.println ("Salary:" + efferene.getSalary ()) ؛ شهادات sortedSet = exearceee.getCertificates () ؛ لـ (iterator iterator2 = issities.iterator () ؛ iterator2.hasNext () ؛) {certtName = (شهادة) iterator2.next () ؛ System.out.println ("الشهادة:" + certname.getName ()) ؛ }} tx.commit () ؛ } catch (hibernateException e) {if (tx! = null) tx.rollback () ؛ E.PrintStackTrace () ؛ } أخيرًا {session.close () ؛ }} / * طريقة تحديث الراتب للموظف * / public void uptordeMployee (integer amployeeId ، int salary) {session session = factory.opensession () ؛ المعاملة tx = فارغة ؛ حاول {tx = session.begintransaction () ؛ موظف الموظف = (الموظف) جلسة. الموظف. session.update (الموظف) ؛ tx.Commit () ؛ } catch (hibernateException e) {if (tx! = null) tx.rollback () ؛ E.PrintStackTrace () ؛ } أخيرًا {session.close () ؛ }} / * طريقة لحذف موظف من السجلات * / public void deleteemployee (integer efferenceId) {session session = factory.opensession () ؛ المعاملة tx = فارغة ؛ حاول {tx = session.begintransaction () ؛ موظف الموظف = (الموظف) جلسة. Session.delete (موظف) ؛ tx.Commit () ؛ } catch (hibernateException e) {if (tx! = null) tx.rollback () ؛ E.PrintStackTrace () ؛ } أخيرًا {session.close () ؛ }}}بعد التجميع والتنفيذ ، يتم الحصول على النتائج التالية على الشاشة ، ويتم إنشاء السجلات في كل من جداول الموظف والشهادات. يمكنك أن ترى أنه تم فرز الشهادات بالترتيب المعاكس. يمكنك تجربته عن طريق تغيير ملف التعيين ، فقط تعيين Sort = "Natural" وتنفيذ البرنامج ، ومقارنة النتائج.
$ Java ManagementEmployee
..... ستعرض رسائل سجل مختلفة هنا ......... الاسم الأول: Manoj الاسم الأخير: كومار الراتب: 4000Certificate: PMPCertificate: McAcerTificate: Mbafirst الاسم: DALIP الاسم: kumar salary: 5000Certificate: mbcertificate: bafirst الاسم: الاسم الأخير: kumar salary:
إذا قمت بفحص نموذج الموظف والشهادة ، فيجب عليك تسجيله:
MySQL> حدد * من الموظف ؛
+----------------------------+----------+| معرف | first_name | last_name | الراتب |+------------------------------------+------------+-----------+| 1 | مانوج | كومار | 5000 |+--------------------------------+---------+صف واحد في المجموعة (0.00 ثانية)
MySQL> حدد * من الشهادة ؛
+----+------------------+-------------+| معرف | شهادة _name | effectee_id |+----+------------------+-------------+| 1 | ماجستير في إدارة الأعمال | 1 || 2 | PMP | 1 || 3 | MCA | 1 |+----+------------------+-------------+3 صفوف في المجموعة (0.00 ثانية)