اي قاعدة بيانات تتكون من مجموعه من الجداول لحفظ البيانات مثال اذا كان هناك قاعدة بيانات لمستشفي سيكون هناك جدول خاص بالمرضي ليحتوي علي بيانات هؤلاء المرضي مثل الاسم والعمر والعنوان والطبيب المعالج وكل ما يتعلق بالمريض اذا فكل row جديد في هذا الجدول يمثل مريض جديد .
عندما يتعامل ال Hibernate مع هذا الجدول فانه يمثله بملفين مرتبطين ببعضهما في التطبيق يحملون نفس اسم هذا الجدول
1- ملف Java class وهو ال Persistent
2- ملف XML وهو Mapping file
بالتالي كل جدول في ال DB سيكون له ملفين باسمه في التطبيق وكل object من ال class يمثل row جديد في الجدول
اي انه يمثل مريض جديد او موظف جديد اي انه ياخذ القيم المتواجدة في هذا ال Object وطبقا لملف ال mapping ينشئ row جديد داخل هذا الجدول بتلك البيانات
وكل متغير بيتمثل في 3 اماكن في ال SQL وفي ال Java وفي Mapping
1- Persistent Class
هو class عادي لكنه يجب ان يحتوي علي مجموعة من الخصائص ويسمي ايضا POJO (plain old java object)
- يجب ان يحتوي علي default constructor
-يجب ان يحتوي علي ID خاص به مثل ال primary key في ال DB
-يجب ان تكون جميع المتغيرات بداخله private وان يكون لكل متغير ال Setxxx & Getxxx الخاص به لانه عن طريقهما
يتم التعامل مع المتغير
- يجب ان يكون class مستقل لا يرث او يورث او implement لاي class اخر
وبناءا علي هذه الشروط لو عندي جدول اسمه employee في ال DB هيكون ال Persistent Class الخاص به بالشكل ده
2-Mapping file
وهو عبارة عن ملف XML يحمل نفس اسم ال class المقابل له بهذا الشكل classname.hbm.xml به مجموعة من ال Tags وهو بمثابة المترجم الذي يقوم بتطابق المتغيرات من Java الي SQL ويكون بهذا الشكل
1 - <class> ويحتوي علي 2 attributes الاول name وهو الاسم المقابل لل class الخاص به هذا الملف والثاني table وهو الخاص باسم الجدول في ال DB
2 -<id> وهو المقابل للمتغير ID في الclass وال primary key في الجدول وبه name وهو اسمه في ال class
وال column المقابل له في ال الجدول وال type الخاص به
3-ولكي يكون ال auto اي انه يزيد مع كل object نستخدم العنصر <generator> ويحتوي علي attribute تسمي class وعند اعطائها قيمة native انا كده بديله الاختيار الخاص بال auto ان يكون (identity, sequence , hilo)
4- و كل متغير في ال class يمثل ب تاج <property> وبه name وهو اسمه في ال class
وال column المقابل له في ال الجدول وال type الخاص به
ويوجد هناك tags اخري سنتحدث عنها حين استخدامها
مثلا ال firstName ستكون في ال java من نوع String وفي ال SQL من نوع VARCHAR
كده اللي بيحصل مع ال Hibernate عند وضع بيانات جديدة او تحديثها انه بيعمل object من ال persistent class
(java type)
ويحفظ هذه البيانات في المتغيرات ثم يذهب لملف الMapping ( Hibernate mapping types)
ليقارن المتغيرات ويري ما الذي يطابقها في جدول (SQL data types) DB
وهذه الجداول توضح انواع البيانات والمقابل لها
EmoticonEmoticon