السبت، 9 نوفمبر 2019

مكونات JPA - ORM

مكونات JPA - ORM 

مكونات JPA - ORM
تستخدم معظم التطبيقات المعاصرة قاعدة بيانات علائقية لتخزين البيانات الكبيرة.  في الآونة الأخيرة ، تحول العديد من البائعين إلى قاعدة بيانات الكائنات لتقليل العبء على صيانة البيانات.  وهذا يعني أن قاعدة بيانات الكائنات أو التقنيات المتعلقة بالكائنات تهتم بالتخزين والاسترجاع والتحديث والصيانة.  الجزء الأساسي من كائن التقنيات العلائقية هذا هو تعيين ملف orm.xml.  إذا كان ملف xml لا يحتاج إلى ترجمة ، يمكننا بسهولة إجراء تغييرات على مصادر بيانات متعددة مع إدارة أقل.

كائن الاعدادات او  التخطيط العلائقية Oject Rational Mapping
 يخبرك "كائن الاعدادات  العلائقية " (ORM) باختصار عن ماهية ORM وكيف تعمل.  ORM هي قدرة برمجة على إخفاء البيانات من نوع الكائن إلى نوع العلائقية والعكس.

 الميزة الرئيسية لـ ORM هي تعيين كائن أو ربطه ببياناته في قاعدة البيانات.  أثناء التعيين ، يتعين علينا النظر في البيانات ونوع البيانات وعلاقاتها مع الكيان الذاتي أو الكيان في أي جدول آخر.
الميزات المتقدمة
الثبات الاصطلاحي Idiomatic persistence : يمكنك من كتابه فئات الثبات باستخدام الفئات الموجهة للكائنات.

عاليه الأداء  High Performance : لديها العديد من تقنيات الجلب وتقنيات تامين الأمل.

الموثوقية Reliable : انها مستقره للغاية وبارزه. تستخدم من قبل العديد من المبرمجين الصناعية.

معمارية اورم ORM
هنا  التالي الهندسة المعمارية اورم.

يوضح البنية أعلاه كيفيه تخزين بيانات الكائن في قاعده بيانات علائقية في ثلاث مراحل.

Phase1 المرحلة الأولى 
تحتوي المرحلة الاولي ، المسمية باسم مرحله بيانات الكائن object data علي فئات POJO وواجات الخدمة والفئات. وهو طبقه الاعمال الرئيسية المكونة ، والتي لديها عمليات منطق الاعمال والسمات.

علي سبيل المثال دعوانا ناخذ قاعده بيانات الموظفين كمخطط-

تحتوي فئة POJO الموظف علي سمات مثل المعرف والاسم والراتب والتعيين. وأساليب مثل واضعه وطرق لفت من تلك الصفات.

تحتوي فئات الموظفين DAO/Service علي أساليب خدمه مثل إنشاء موظف والبحث عن موظف وحذف موظف.

المرحلة الثانية
المرحلة الثانية المسمية باسم مرحله التعيين أو الثبات التي تحتوي علي موفر JPA ، وملف التعيين (xml) ، وأداه تحميل JPA ، وشبكه الكائنات.

JPA المزود  provider: منتج البائع الذي يحتوي علي نكهة JPA (javax. المثابرة). علي سبيل المثال Eclipselink, Toplink, Hibernate الخ.
ملف التعيين او الاعدادات Mapping file: يحتوي ملف التعيين (xml) علي تكوين تعيين بين البيانات في فئة POJO والبيانات في قاعده بيانات علائقية.

JPA محمل Loader: محمل JPA يعمل مثل ذاكره التخزين المؤقت ، والتي يمكن تحميل بيانات الشبكة العلائقية. وهو يعمل مثل نسخه من قاعده البيانات للتفاعل مع فئات الخدمة للبيانات POJO (سمات من فئة POJO).

شبكه الكائن object grid: الشبكة كائن هو موقع مؤقت الذي يمكن تخزين نسخه من البيانات العلائقية ، اي مثل ذاكره التخزين المؤقت. يتم تنفيذ كافة الاستعلامات مقابل قاعده البيانات أولا علي البيانات الموجودة في شبكه الكائن. فقط بعد ان التنفيذ  ، فانه يؤثر علي قاعده البيانات الرئيسية.

المرحلة 3
المرحلة الثالثة هي مرحله البيانات العلائقية. يحتوي علي البيانات العلائقية التي ترتبط منطقيا بمكون الاعمال. كما هو موضح أعلاه ، فقط عندما يقوم مكون الاعمال بتنفيذ البيانات ، يتم تخزينه في قاعده البيانات فعليا. حتى ذلك الحين يتم تخزين البيانات المعدلة في ذاكره التخزين المؤقت كتنسيق شبكه. ونفس الشيء هو عمليه الحصول علي البيانات.

وتسمي اليه التفاعل البرنامجي للمراحل الثلاث المذكورة أعلاه علي انها تعيين كائن علائقي.
تعيين xml
ملف xml الخاص بالتعيين هو إرشاد بائع JPA لتعيين فئات الكيان مع جداول قاعده البيانات.

دعوانا ناخذ مثالا للكيان الموظف الذي يحتوي علي أربع سمات. فئة POJO من كيان الموظف المسمي Employee.Java كما يلي:
public class Employee {

   private int eid;
   private String ename;
   private double salary;
   private String deg;

   public Employee(int eid, String ename, double salary, String deg) {
      super( );
      this.eid = eid;
      this.ename = ename;
      this.salary = salary;
      this.deg = deg;
   }

   public Employee( ) {
      super();
   }

   public int getEid( ) {
      return eid;
   }
   
   public void setEid(int eid) {
      this.eid = eid;
   }
   
   public String getEname( ) {
      return ename;
   }
   
   public void setEname(String ename) {
      this.ename = ename;
   }

   public double getSalary( ) {
      return salary;
   }
   
   public void setSalary(double salary) {
      this.salary = salary;
   }

   public String getDeg( ) {
      return deg;
   }
   
   public void setDeg(String deg) {
      this.deg = deg;
   }
}

التعليمه البرمجية المذكورة أعلاه هي فئة POJO كيان الموظف. انه يحتوي علي أربع سمات العيد ، اسم ، الراتب ، و deg. خذ بالاعتبار هذه السمات هي حقول الجدول في قاعده البيانات والعيد هو المفتاح الأساسي لهذا الجدول. الآن لدينا لتصميم ملف تعيين الاسبات لذلك. ملف التعيين المسمي Mapping.xml كما يلي:
 xml version="1.0" encoding="UTF-8" ?>

 xmlns="http://java.sun.com/xml/ns/persistence/orm"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm    
   http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
   version="1.0">
      
    XML Mapping file
class="Employee"> name="EMPLOYEETABLE"/> name="eid"> strategy="TABLE"/> name="ename"> name="EMP_NAME" length="100"/> name="salary"> name="deg">


البرنامج النصي أعلاه لتعيين Mapping فئة الكيان مع جدول قاعدة البيانات.  في هذا الملف

 : تحدد العلامة تعريف المخطط للسماح بعلامات الكيان في ملف xml.

 : تحدد العلامة وصف التطبيق.

 : تحدد العلامة فئة الكيان التي تريد تحويلها إلى جدول في قاعدة بيانات.  تحدد فئة السمة اسم فئة كيان POJO.

 : تحدد العلامة اسم الجدول.  إذا كنت تريد الاحتفاظ باسم الفئة كاسم جدول ، فإن هذه العلامة ليست ضرورية.

 : تحدد العلامة السمات (الحقول في الجدول).

 : تحدد العلامة المفتاح الأساسي للجدول.  تحدد العلامة كيفية تعيين قيمة المفتاح الأساسي مثل تلقائي أو يدوي أو مأخوذ من التسلسل.

 : يتم استخدام العلامة لتحديد السمات المتبقية للجدول.

 <column-name>: يتم استخدام العلامة لتعريف اسم حقل الجدول المعرفة من قبل المستخدم.
التعليقات التوضيحيه
يتم استخدام ملفات Xml بشكل عام لتكوين مكون معين ، أو تعيين اثنين من مواصفات مختلفه من المكونات. في حالتنا ، علينا ان نحافظ علي xml بشكل منفصل في اطار. وهذا يعني اثناء كتابه ملف xml التعيين نحن بحاجه إلى مقارنه سمات فئة POJO مع العلامات الكيان في تعيين ملف .xml.

هنا هو الحل: في تعريف الفئة ، يمكننا كتابه جزء التكوين باستخدام التعليقات التوضيحية. يتم استخدام التعليقات التوضيحية للفئات والخصائص والأساليب. تبدا التعليقات التوضيحية بالرمز ' @ '. يتم تعريف التعليقات التوضيحية قبل تعريف الفئة أو الخاصية أو الأسلوب. يتم تعريف كافة الشروح JPA في javax. حزمه الثبات.

هنا يتبع قائمه الشروح المستخدمة في الامثله لدينا.
العلامة التوضيحية الوصف
@Entity.يحدد هذا التعليق التوضيحي الإعلان عن الفئة  ككيان أو جدول
@Tableيحدد هذا التعليق التوضيحي إعلان اسم الجدول
@Basic.يحدد هذا التعليق التوضيحي الحقول غير المقيدة بشكل صريح
@Embedded.يحدد هذا التعليق التوضيحي خصائص الفئة أو الكيان الذي له مثيل بقيمة لفئة قابلة للتضمين
@Id.يحدد هذا التعليق التوضيحي الخاصية ، واستخدام الهوية (المفتاح الأساسي لجدول) للفئة
@GeneratedValue.يحدد هذا التعليق التوضيحي كيف يمكن تهيئة سمة الهوية مثل تلقائي أو يدوي أو قيمة مأخوذة من جدول التسلسل
@Transient.يحدد هذا التعليق التوضيحي الخاصية غير الدائمة ، أي  لا يتم تخزين القيمة أبدًا في قاعدة البيانات
@Column.يستخدم هذا التعليق التوضيحي لتحديد عمود أو سمة لخاصية الثبات
@SequenceGenerator.يستخدم هذا التعليق التوضيحي لتحديد قيمة الخاصية المحددة في التعليقات التوضيحيةGeneratedValue.  يخلق تسلسل
@TableGenerator.يتم استخدام هذا التعليق التوضيحي لتحديد منشئ القيمة للخاصية المحددة في التعليق التوضيحيGeneratedValue.  يخلق جدول لتوليد القيمة
@AccessType.يستخدم هذا النوع من التعليقات التوضيحية لضبط نوع الوصول.  إذا قمت بتعيين @ AccessType (FIELD) ، فسوف يحدث الوصول إلى الحقل.  إذا قمت بتعيين @ AccessType (الملكية) ، فسيحدث تقييم العقار
@JoinColumn.يستخدم هذا التعليق التوضيحي لتحديد ارتباط كيان أو مجموعة كيان.  يتم استخدامه في العديد من الجمعيات واحد لواحد
@UniqueConstraint.يستخدم هذا التعليق التوضيحي لتحديد الحقل ، القيد الفريد للجدول الأساسي أو الثانوي
@ColumnResultيشير هذا التعليق التوضيحي إلى اسم عمود في استعلام SQL باستخدام جملة تحديد.
@ManyToMany.يتم استخدام هذا التعليق التوضيحي لتحديد علاقة أطراف بأطراف بين جداول الصلة
@ManyToOne.يتم استخدام هذا التعليق التوضيحي لتحديد علاقة أطراف بأطراف بين جداول الصلة
@OneToManyيتم استخدام هذا التعليق التوضيحي لتحديد علاقة رأس بأطراف بين جداول الصلة.
@OneToOneيستخدم هذا التعليق التوضيحي لتحديد علاقة رأس برأس بين جداول الصلة.
@NamedQueriesيستخدم هذا التعليق التوضيحي لتحديد قائمة الاستعلامات المسماة.
@NamedQuery.يستخدم هذا التعليق التوضيحي لتحديد استعلام باستخدام الاسم الثابت
 مقايس جافا بين Java bean standards
 تقوم فئة Java بتغليف قيم المثيلات وسلوكياتها في وحدة واحدة تسمى الكائن.  يعد Java Bean مكونًا مؤقتًا للتخزين وقابل لإعادة الاستخدام أو كائن.  إنه فصل قابل للتسلسل وله طرق منشئ افتراضي و getter و setter لتهيئة سمات المثال بشكل فردي.

 معايير بين Bean

يحتوي Bean على المُنشئ الافتراضي أو ملف يحتوي على مثيل متسلسل.  لذلك ، يمكن ل بين  beanإنشاء مثيل له.

 يمكن فصل خصائص البين bean إلى خصائص منطقية وخصائص غير منطقية.

 تحتوي الخاصية غير المنطقية على أساليب getter و setter.

 تحتوي الخاصية المنطقية على setter وهي الطريقة.

 يجب أن تبدأ طريقة Getter في أي خاصية بحرف صغير "get" (اصطلاح طريقة java) ومتابعة باسم الحقل الذي يبدأ بحرف كبير.  مثلا  اسم الحقل هو "الراتب" وبالتالي فإن طريقة getter لهذا الحقل هي "getSalary ()".

 يجب أن تبدأ طريقة Setter في أي خاصية بـ "set" (أحرف طريقة java) صغيرة الحجم ، ومتابعة باسم الحقل الذي يبدأ بحرف كبير وقيمة الوسيطة لتعيينها إلى الحقل.  مثلا  اسم الحقل هو "الراتب" ، وبالتالي فإن طريقة تعيين هذا الحقل هي "setSalary (double sal)".

 بالنسبة إلى الخاصية Boolean ، تتمثل الطريقة في التحقق مما إذا كانت صحيحة أم خاطئة.  مثلا  الخاصية Boolean 'فارغة' ، طريقة هذا الحقل هي 'isEmpty ()'.

التسميات: