الجمعة، 15 نوفمبر 2019

معايير اى بي آي في جي بي آي JPA - Criteria API

معايير اى بي آي في جي بي آي JPA - Criteria API

معايير اى بي آي في جي بي آي JPA - Criteria API


واجهة برمجة تطبيقات المعايير هي واجهة برمجة تطبيقات معرفة مسبقًا تستخدم لتحديد استعلامات الكيانات.  إنها الطريقة البديلة لتعريف استعلام JPQL.  هذه الاستعلامات آمنة من حيث النوعية ومحمولة وسهلة التعديل عن طريق تغيير بناء الجملة.  على غرار JPQL ، يتبع المخطط التجريدي (سهل تحرير المخطط) والكائنات المدمجة.  تختلط واجهة برمجة تطبيقات بيانات التعريف بمعايير API لنمذجة الكيان المستمر لاستعلامات المعايير.

 الميزة الرئيسية لمعايير API هي أنه يمكن اكتشاف الأخطاء في وقت مبكر أثناء وقت الترجمة.  استعلامات JPQL المستندة إلى سلسلة والاستعلامات المستندة إلى معايير JPA هي نفسها في الأداء والكفاءة.

 تاريخ المعايير API
 يتم تضمين API للمعايير في جميع إصدارات JPA ، وبالتالي يتم إخطار كل خطوة من خطوات API في مواصفات JPA.

 في JPA 2.0 ، يتم تطوير واجهة برمجة تطبيقات استعلام المعايير ، وتوحيد الاستعلامات.
 في JPA 2.1 ، يتم تضمين معايير التحديث والحذف (التحديث الشامل والحذف).
 
هيكل معايير الاستعلام
 يرتبط كل من API Criteria و JPQL ارتباطًا وثيقًا ويسمح لهما بالتصميم باستخدام عوامل تشغيل مماثلة في استفساراتهم.  يتبع حزمة javax.persistence.criteria لتصميم استعلام.  بنية الاستعلام تعني استعلام معايير بناء الجملة.

 يُرجع استعلام المعايير البسيطة التالي جميع مثيلات فئة الكيان في مصدر البيانات.

EntityManager em = ...;
CriteriaBuilder cb = em.getCriteriaBuilder();

CriteriaQuery<Entity class> cq = cb.createQuery(Entity.class);
Root<Entity> from = cq.from(Entity.class);

cq.select(Entity);
TypedQuery<Entity> q = em.createQuery(cq);
List<Entity> allitems = q.getResultList();

يوضح الاستعلام الخطوات الأساسية لإنشاء معايير.

 يتم استخدام مثيل EntityManager لإنشاء كائن CriteriaBuilder.
 يتم استخدام مثيل CriteriaQuery لإنشاء كائن استعلام.  سيتم تعديل سمات كائن الاستعلام مع تفاصيل الاستعلام.
 يتم استدعاء الأسلوب CriteriaQuery.from لتعيين جذر الاستعلام.
 يتم استدعاء CriteriaQuery.select لتعيين نوع قائمة النتائج.
 يتم استخدام مثيل TypedQuery لإعداد استعلام للتنفيذ وتحديد نوع نتيجة الاستعلام.
 أسلوب getResultList على كائن TypedQuery لتنفيذ استعلام.  إرجاع هذا الاستعلام مجموعة من الكيانات ، يتم تخزين النتيجة في قائمة.
 مثال لمعايير API
 دعونا ننظر في مثال قاعدة بيانات الموظف.  لنفترض أن جدول jpadb.employee يحتوي على السجلات التالية:

Eid Ename           Salary Deg
401 Gopal         40000 Technical Manager
402 Manisha         40000 Proof reader
403 Masthanvali     35000 Technical Writer
404     Satish         30000 Technical writer
405 Krishna         30000 Technical Writer
406 Kiran         35000 Proof reader

إنشاء مشروع JPA في الكسوف IDE المسمى JPA_Eclipselink_Criteria.  جميع وحدات هذا المشروع موضحة كالتالي:

 إنشاء الكيانات
 قم بإنشاء حزمة باسم com.ahmedalmahallawi.eclipselink.entity ضمن الحزمة 'src'.

 قم بإنشاء فصل باسم Employee.java ضمن الحزمة المحددة.  يظهر كيان الموظف في الفصل على النحو التالي:

Create a class named Employee.java under given package. The class Employee entity is shown as follows:
package com.ahmedalmahallawi.eclipselink.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Employee {
   @Id
   @GeneratedValue(strategy= GenerationType.AUTO)  
   
   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;
   }
   
   @Override
   public String toString() {
   return "Employee [eid = " + eid + ", ename = " + ename + ", salary = " + salary + ", deg = " + deg + "]";
   }
}

Persistence.xml
 مطلوب ملف Persistence.xml لتكوين قاعدة البيانات وتسجيل فئات الكيانات.

 سيتم إنشاء Persistence.xml بواسطة الكسوف IDE أثناء عمل مشروع JPA.  تفاصيل التكوين هي مواصفات المستخدم.  يتم عرض ملف persistence.xml كما يلي:

xml version = "1.0" encoding = "UTF-8"?>
 version="2.0" xmlns = "http://java.sun.com/xml/ns/persistence" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation = "http://java.sun.com/xml/ns/persistence 
   http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
   
    name = "Eclipselink_JPA" transaction-type = "RESOURCE_LOCAL">
      com.ahmedalmahallawi.eclipselink.entity.Employee
name = "javax.persistence.jdbc.url" value = "jdbc:mysql://localhost:3306/jpadb"/> name = "javax.persistence.jdbc.user" value = "root"/> name = "javax.persistence.jdbc.password" value = "root"/> name = "javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> name = "eclipselink.logging.level" value = "FINE"/> name = "eclipselink.ddl-generation" value="create-tables"/>

فئات الخدمة
 تحتوي هذه الوحدة على فئات الخدمة ، والتي تنفذ جزء استعلام المعايير باستخدام تهيئة واجهة برمجة تطبيقات MetaData.  قم بإنشاء حزمة باسم "com.ahmedalmahallawi.eclipselink.service".  يتم إنشاء الفئة المسماة CriteriaAPI.java ضمن الحزمة المحددة.  يتم عرض فئة DAO كالتالي:

package com.ahmedalmahallawi.eclipselink.service;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;

import com.ahmedalmahallawi.eclipselink.entity.Employee;

public class CriteriaApi {
   public static void main(String[] args) {
   
   EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
   EntityManager entitymanager = emfactory.createEntityManager( );
   CriteriaBuilder criteriaBuilder = entitymanager.getCriteriaBuilder();
   CriteriaQuery<Object> criteriaQuery = criteriaBuilder.createQuery();
   Root<Employee> from = criteriaQuery.from(Employee.class);

   //select all records
   System.out.println(“Select all records”);
   CriteriaQuery<Object> select = c riteriaQuery.select(from);
   TypedQuery<Object> typedQuery = entitymanager.createQuery(select);
   List<Object> resultlist = typedQuery.getResultList();

   for(Object o:resultlist) {
      Employee e = (Employee)o;
      System.out.println("EID : " + e.getEid() + " Ename : " + e.getEname());
   }

   //Ordering the records 
   System.out.println(“Select all records by follow ordering”);
   CriteriaQuery<Object> select1 = criteriaQuery.select(from);
   select1.orderBy(criteriaBuilder.asc(from.get("ename")));
   TypedQuery<Object> typedQuery1 = entitymanager.createQuery(select);
   List<Object> resultlist1 = typedQuery1.getResultList();

   for(Object o:resultlist1){
      Employee e=(Employee)o;
      System.out.println("EID : " + e.getEid() + " Ename : " + e.getEname());
   }

   entitymanager.close( );
   emfactory.close( );
   }
}

بعد تجميع وتنفيذ البرنامج أعلاه ، سوف تحصل على الإخراج في لوحة التحكم في Eclipse IDE على النحو التالي:

Select All records
EID : 401 Ename : Gopal
EID : 402 Ename : Manisha
EID : 403 Ename : Masthanvali
EID : 404 Ename : Satish
EID : 405 Ename : Krishna
EID : 406 Ename : Kiran
Select All records by follow Ordering
EID : 401 Ename : Gopal
EID : 406 Ename : Kiran
EID : 405 Ename : Krishna
EID : 402 Ename : Manisha
EID : 403 Ename : Masthanvali
EID : 404 Ename : Satish





التسميات:

الخميس، 14 نوفمبر 2019

علاقات الكيانات جي بي آي JPA - Entity Relationships

علاقات الكيانات جي بي آي JPA - Entity Relationships

علاقات الكيانات جي بي آي JPA - Entity Relationships
عندما تتكلم عن علاقات الكيانات Entity Relationship 
فنحن نتكلم عن لغة الإستعلام البنيوية للبيانات  اس كيو ال SQL يمكنك القراءة عنها هنا من خلال الرابط التالي SQL  


يأخذك هذا الفصل خلال العلاقات بين الكيانات.  بشكل عام ، تكون العلاقات أكثر فاعلية بين الجداول في قاعدة البيانات.  هنا يتم التعامل مع فئات الكيانات كجداول علائقية (مفهوم JPA) ، وبالتالي فإن العلاقات بين فئات الكيان هي كما يلي:

1  ManyToOne@ العلاقة
2  OneToMany@ العلاقة
3  OneToOne@ العلاقة
4  ManyToMany@ العلاقة

اولا  ManyToOne@ العلاقة


علاقة أطراف بأطراف بين الكيانات: حيث يتم الرجوع / الرجوع إلى كيان واحد (عمود أو مجموعة من الأعمدة) مع كيان آخر (عمود أو مجموعة من الأعمدة) يحتوي على قيم فريدة.  في قواعد البيانات العلائقية ، تكون هذه العلاقات قابلة للتطبيق باستخدام المفتاح الخارجي / المفتاح الأساسي بين الجداول.

 دعونا نفكر في مثال العلاقة بين الموظف وكيانات الإدارة.  بطريقة أحادية الاتجاه ، أي من الموظف إلى القسم ، فإن العلاقة بين أطراف متعددة تنطبق.  هذا يعني أن كل سجل موظف يحتوي على معرف قسم واحد ، والذي يجب أن يكون مفتاح أساسي في جدول القسم.  هنا في جدول الموظف ، معرف القسم هو مفتاح أجنبي.

 يوضح الشكل علاقة أطراف متعددة كما يلي:



قم بإنشاء مشروع JPA في الكسوف IDE باسم JPA_Eclipselink_MTO.  جميع وحدات هذا المشروع موضحة كالتالي:

 إنشاء الكيانات create entities
 اتبع الرسم البياني أعلاه لإنشاء الكيانات.  قم بإنشاء حزمة باسم "com.ahmedalmahallawi.eclipselink.entity" ضمن حزمة "src".  قم بإنشاء فصل باسم Department.java ضمن الحزمة المحددة.  يظهر كيان قسم الفصل على النحو التالي:


package com.ahmedalmahallawi.eclipselink.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Department {

   @Id 
   @GeneratedValue( strategy=GenerationType.AUTO )

   private int id;
   private String name;

   public int getId() {
      return id;
   }

   public void setId(int id) {
      this.id = id;
   }

   public String getName( ){
      return name;
   }

   public void setName( String deptName ){
      this.name = deptName;
   }
}



قم بإنشاء الكيان الثاني في هذه العلاقة - فئة كيان الموظف المسمى Employee.java ضمن حزمة "com.ahmedalmahallawi.eclipselink.entity".  تظهر فئة كيان الموظف على النحو التالي:

package com.ahmedalmahallawi.eclipselink.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

@Entity
public class Employee{

   @Id
   @GeneratedValue( strategy= GenerationType.AUTO )  
   
   private int eid;
   private String ename;
   private double salary;
   private String deg;
   
   @ManyToOne
   private Department department;

   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;
   }

   public Department getDepartment() {
      return department;
   }

   public void setDepartment(Department department) {
      this.department = department;
   }
}



Persistence.xml
 مطلوب ملف Persistence.xml لتكوين قاعدة البيانات وتسجيل فئات الكيانات.

 سيتم إنشاء Persitence.xml بواسطة eclipse IDE أثناء إنشاء مشروع JPA.  تفاصيل التكوين هي مواصفات المستخدم.  يتم عرض ملف persistence.xml كما يلي:

xml version="1.0" encoding = "UTF-8"?>

 version = "2.0" 
   xmlns = "http://java.sun.com/xml/ns/persistence" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation = "http://java.sun.com/xml/ns/persistence 
   http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
   
    name = "Eclipselink_JPA" transaction-type = "RESOURCE_LOCAL">
      com.ahmedalmahallawi.eclipselink.entity.Employee
com.ahmedalmahallawi.eclipselink.entity.Department name = "javax.persistence.jdbc.url" value = "jdbc:mysql://localhost:3306/jpadb"/> name = "javax.persistence.jdbc.user" value = "root"/> name = "javax.persistence.jdbc.password" value="root"/> name = "javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> name = "eclipselink.logging.level" value = "FINE"/> name = "eclipselink.ddl-generation" value = "create-tables"/>
فئات الخدمة
 تحتوي هذه الوحدة على فئات الخدمة ، والتي تنفذ الجزء العلائقي باستخدام تهيئة السمة.  قم بإنشاء حزمة تحت حزمة 'src باسم' com.ahmedalmahallawi.eclipselink.service '.  يتم إنشاء فئة DAO المسمى ManyToOne.java ضمن الحزمة المحددة.  يتم عرض فئة DAO كالتالي:

package com.ahmedalmahallawieclipselink.service;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import com.ahmedalmahallawi.eclipselink.entity.Department;
import com.ahmedalmahallawi.eclipselink.entity.Employee;

public class ManyToOne {
   public static void main( String[ ] args ) {
   
   EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
   EntityManager entitymanager = emfactory.createEntityManager( );
   entitymanager.getTransaction( ).begin( );

   //Create Department Entity
   Department department = new Department();
   department.setName("Development");
   
   //Store Department
   entitymanager.persist(department);

   //Create Employee1 Entity
   Employee employee1 = new Employee();
   employee1.setEname("Satish");
   employee1.setSalary(45000.0);
   employee1.setDeg("Technical Writer");
   employee1.setDepartment(department);

   //Create Employee2 Entity
   Employee employee2 = new Employee();
   employee2.setEname("Krishna");
   employee2.setSalary(45000.0);
   employee2.setDeg("Technical Writer");
   employee2.setDepartment(department);

   //Create Employee3 Entity
   Employee employee3 = new Employee();
   employee3.setEname("Masthanvali");
   employee3.setSalary(50000.0);
   employee3.setDeg("Technical Writer");
   employee3.setDepartment(department);

   //Store Employees
   entitymanager.persist(employee1);
   entitymanager.persist(employee2);
   entitymanager.persist(employee3);

   entitymanager.getTransaction().commit();
   entitymanager.close();
   emfactory.close();
   }
}

بعد تجميع وتنفيذ البرنامج أعلاه ، سوف تحصل على إشعارات في لوحة التحكم الخاصة بـ Eclipse IDE.  للإخراج ، تحقق من طاولة عمل MySQL.  في هذا المثال ، يتم إنشاء جدولين.

 تمرير الاستعلام التالي في واجهة MySQL وتظهر نتيجة جدول القسم في تنسيق جدول كما يلي في الاستعلام:

Select * from department;

Id Name
101 Development

تمرير الاستعلام التالي في واجهة MySQL وتظهر نتيجة جدول الموظف في شكل جدول على النحو التالي في الاستعلام:
Select * from employee;

Eid Deg                 Ename         Salary Department_Id
102 Technical Writer Satish         45000 101
103 Technical Writer Krishna         45000 101
104 Technical Writer Masthan Wali 50000 101


في الجدول أعلاه ، Deparment_Id هو المفتاح الأجنبي  (الحقل المرجعي) من جدول Department.

 ثانيا OneToMany@ العلاقة
 في هذه العلاقة ، يُشار إلى كل صف من كيان واحد بالعديد من السجلات الفرعية في كيان آخر.  الشيء المهم هو أن سجلات الأطفال لا يمكن أن يكون لها عدة آباء  في علاقة رأس بأطراف بين الجدول (أ) والجدول (ب) ، يرتبط كل صف في الجدول (أ) بـ 0 أو 1 أو العديد من الصفوف في الجدول (ب).

 لننظر في المثال أعلاه.  إذا كان الموظف والقسم بطريقة عكسية أحادية الاتجاه ، فإن العلاقة هي علاقة أطراف بأطراف.  قم بإنشاء مشروع JPA في الكسوف IDE باسم JPA_Eclipselink_OTM.  جميع وحدات هذا المشروع موضحة كالتالي:

 إنشاء الكيانات
 اتبع الرسم البياني أعلاه لإنشاء الكيانات.  قم بإنشاء حزمة باسم "com.ahmedalmahallawi.eclipselink.entity" ضمن حزمة "src".  قم بإنشاء فصل باسم Department.java ضمن الحزمة المحددة.  يظهر كيان قسم الفصل على النحو التالي:
package com.ahmedalmahallawi.eclipselink.entity;

import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class Department {

    @Id 
    @GeneratedValue( strategy=GenerationType.AUTO )
    
    private int id;
    private String name;
    
    @OneToMany( targetEntity=Employee.class )
    private List employeelist;

    public int getId() {
     return id;
    }
    
    public void setId(int id) {
     this.id = id;
    }
    
    public String getName( ) {
     return name;
    }
    
    public void setName( String deptName ) {
     this.name = deptName;
    }

    public List getEmployeelist() {
      return employeelist;
    }

   public void setEmployeelist(List employeelist) {
      this.employeelist = employeelist;
   }
}


قم بإنشاء الكيان الثاني في هذه العلاقة - فئة كيان الموظف ، المسمى Employee.java ضمن حزمة "com.ahmedalmahallawi.eclipselink.entity".  تظهر فئة كيان الموظف على النحو التالي:

package com.ahmedalmahallawi.eclipselink.entity;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Employee {

   @Id
   @GeneratedValue( strategy= GenerationType.AUTO )  

   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;
   } 
}

Persistence.xml
 سيتم إنشاء Persistence.xml بواسطة eclipse IDE أثناء إنشاء مشروع JPA.  تفاصيل التكوين هي مواصفات المستخدم.  يتم عرض ملف persistence.xml كما يلي:
xml version = "1.0" encoding = "UTF-8"?>

 version = "2.0" xmlns = "http://java.sun.com/xml/ns/persistence" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation = "http://java.sun.com/xml/ns/persistence 
   http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

    name = "Eclipselink_JPA" transaction-type = "RESOURCE_LOCAL">
      com.ahmedalmahallawi.eclipselink.entity.Employee
com.ahmedalmahallawi.eclipselink.entity.Department name = "javax.persistence.jdbc.url" value = "jdbc:mysql://localhost:3306/jpadb"/> name = "javax.persistence.jdbc.user" value = "root"/> name = "javax.persistence.jdbc.password" value = "root"/> name = "javax.persistence.jdbc.driver" value = "com.mysql.jdbc.Driver"/> name = "eclipselink.logging.level" value = "FINE"/> name = "eclipselink.ddl-generation" value = "create-tables"/>
فئات الخدمة
 تحتوي هذه الوحدة على فئات الخدمة ، والتي تنفذ الجزء العلائقي باستخدام تهيئة السمة.  قم بإنشاء حزمة تحت حزمة 'src باسم' com.ahmedalmahallawi.eclipselink.service '.  يتم إنشاء فئة DAO المسمى OneToMany.java ضمن الحزمة المحددة.  يتم عرض فئة DAO كالتالي:

package com.ahmedalmahallawieclipselink.service;

import java.util.List;
import java.util.ArrayList;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import com.ahmedalmahallawi.eclipselink.entity.Department;
import com.ahmedalmahallawi.eclipselink.entity.Employee;

public class OneToMany {
   public static void main(String[] args) {
   
   EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
   EntityManager entitymanager = emfactory.createEntityManager( );
   entitymanager.getTransaction( ).begin( );

   //Create Employee1 Entity
   Employee employee1 = new Employee();
   employee1.setEname("Satish");
   employee1.setSalary(45000.0);
   employee1.setDeg("Technical Writer");

   //Create Employee2 Entity
   Employee employee2 = new Employee();
   employee2.setEname("Krishna");
   employee2.setSalary(45000.0);
   employee2.setDeg("Technical Writer");

   //Create Employee3 Entity
   Employee employee3 = new Employee();
   employee3.setEname("Masthanvali");
   employee3.setSalary(50000.0);
   employee3.setDeg("Technical Writer");

   //Store Employee
   entitymanager.persist(employee1);
   entitymanager.persist(employee2);
   entitymanager.persist(employee3);

   //Create Employeelist
   List<Employee> emplist = new ArrayList();
   emplist.add(employee1);
   emplist.add(employee2);
   emplist.add(employee3);

   //Create Department Entity
   Department department = new Department();
   department.setName("Development");
   department.setEmployeelist(emplist);

   //Store Department
   entitymanager.persist(department);

   entitymanager.getTransaction().commit();
   entitymanager.close();
   emfactory.close();
   }
}

بعد تجميع وتنفيذ البرنامج أعلاه ، سوف تحصل على إشعارات في لوحة التحكم الخاصة بـ Eclipse IDE.  للتحقق من الإخراج ، منضدة عمل MySQL كما يلي.  في هذا المشروع ، يتم إنشاء ثلاثة جداول.

 تمرير الاستعلام التالي في واجهة MySQL ، وتظهر نتيجة جدول department_employee بتنسيق جدولي كما يلي في الاستعلام:

Select * from department_Id;

Department_Id Employee_Eid
254         251
254         252
254         253

في الجدول أعلاه ، تعد الحقول deparment_id و employee_id هي المفاتيح الخارجية (الحقول المرجعية) من جداول الأقسام والموظفين.

 تمرير الاستعلام التالي في واجهة MySQL وتظهر نتيجة جدول القسم في شكل جدول على النحو التالي في الاستعلام:

Select * from department;

Id Name
254 Development

تمرير الاستعلام التالي في واجهة MySQL وتظهر نتيجة جدول الموظف في شكل جدول على النحو التالي في الاستعلام:

Select * from employee;

Eid Deg                 Ename        Salary
251 Technical Writer Satish        45000
252 Technical Writer Krishna        45000
253 Technical Writer Masthanvali    50000


 ثالثا OneToOne@ العلاقة









التسميات: