Es-jpa-jpa-entity-relationships

提供:Dev Guides
移動先:案内検索

JPA-エンティダードの関係者

エステレカピトゥロルリーヴァアトラベスデラスレラシオネスアントレレラスエンティダデス。 ヘネラルメンテラスリラシオンズソンマスエフェクティヴァスエントレラスタブラスアンラベースデダトス Aquílas clases de entidad son tratadas como tablas relacionales(concepto de JPA)、por lo tanto、las relaciones entre las clases de entidad son los siguientes:

  • @ManyToOneリレーション
  • @OneToMany関係
  • @OneToOneリレーション *@ManyToMany関係

@ManyToOneリレーション

既存の多対一のエンターラスエンティダーズドンレセハフェンレフレンシアアウナエンティダード(コラムナまたはコンジャントデコラムス)コンバロレスユーニコスクコンティエンネンデオトラエンティダード(コラムナまたはコンジャントデコラムス)。 関係者の拠点、関係者、関係者は、クラベスプリマリアクラベスの外皮のタブラの中央分離帯を使用します。

関係者は、すべての関係者を考慮に入れないでください。 de manera unidireccional、es decir、de empleado al departamento、many-to-onerelaciónes aplicable。 Eso significa que cada registro de empleado contiene un id de departamento、que debe ser una clave principal en la tabla Department。 Aquíen la tabla従業員、Departamento id es la claveforánea。

多言語の図表とタブラの関係。

Relaciónmuchos a uno

JPA en eclipse que IDE llamado* JPA_Eclipselink_MTO *を作成します。 トドス・ロス・モデュロス・デ・エステ・プロジェクト・ディスク・ステンテン・マス・アバホ。

Creaciónde Entidades

Siga el anterior dado diagrama para lacreaciónde entidades。 パケテデノミナドを作成します ’com.tutorialspoin.eclipselink.entity’ バジョ ‘src’ パケ。 Crear una clase denominada Department.java bajo dado paquete。 La clase entidad departamento se muestra como sigue:

package com.finddevguides.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;
   }
}

Crear la segunda entidad en estarelación-clase de entidad empleado llamado Employee.java bajo ‘com.finddevguides.eclipselink.entity’ paquete。 La Clase de entidad empleado se muestra como sigue:

package com.finddevguides.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は、日食プロジェクトのIDEを提供し、JPAのプロジェクトを作成します。 ロス・デタレス・デ・コンフィグラシオン・ソン・ラス・エスペシフィック・デル・ウスアリオ。 El archivo persistence.xml se muestra como sigue:

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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">

   <persistence-unit name="Eclipselink_JPA" transaction-type="RESOURCE_LOCAL">

      <class>com.finddevguides.eclipselink.entity.Employee</class>
      <class>com.finddevguides.eclipselink.entity.Department</class>

      <properties>
         <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpadb"/>
         <property name="javax.persistence.jdbc.user" value="root"/>
         <property name="javax.persistence.jdbc.password" value="root"/>
         <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
         <property name="eclipselink.logging.level" value="FINE"/>
         <property name="eclipselink.ddl-generation" value="create-tables"/>
      </properties>

   </persistence-unit>
</persistence>

Clases de servicio

保守的なサービスのクラスは、一部の相対的な概念に基づいて実装されています。 Crear un paquete bajo ‘src’ paquete denominado ‘com.finddevguides.eclipselink.service’ 。 La clase DAO ManyToOne.java se crea bajo dado paquete。 La clase DAO se muestra como sigue:

package com.finddevguideseclipselink.service;

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

import com.finddevguides.eclipselink.entity.Department;
import com.finddevguides.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のコンソラパネルの前に、プログラムの前処理、通知を使用してください。 パララサリダ、verifique MySQLワークベンチ。 イエステンプロ、タブラスをご覧ください。

MySQLの相互運用性に関するコンサルティングと、 Departamento からの最も一般的なcomo sigueの結果:

Select * from department
ID Nombre
101 Desarrollo

MySQLの対話型コンサルティングのタブを表示し、タブラの結果を視覚的に表示します。 Empleado de la siguiente manera。

Select *from employee
Eid Deg Ename Salary Department_Id
102 Technical Writer Satish 45000 101
103 Technical Writer Krishna 45000 101
104 Technical Writer Masthanwali 50000 101

タブラの前部の部門_Id es la claveforánea(campo de referencia)de la tabla Department。

しょーた

エスタ・リラシオン、カダ・フィラ・デ・ウナ・エンティダード・セ・ハチェ・レフェレンシア・ア・ロス・ムコス・レジストロス・セカンダリオス・エン・オトラ・エンティダード。 重要な項目はありません。 タブラAとBのタブラ、カダフィラとタブラAプエデセルヴィンクラードとタブラB

アリババの考察。 Supongamos que empleado y mesas del Departamento en el ejemplo anterior se conectan de manera unidireccional inversa、entonces larelaciónse con convierte en uno de variosrelación。 JPA en eclipse IDE llamado* JPA_Eclipselink_OTM *を作成します。 トドス・ロス・モデュロス・デ・エステ・プロジェクト・ディスク・ステンテン・マス・アバホ。

Creaciónde Entidades

Siga el anterior dado diagrama para lacreaciónde entidades。 パケテデノミナドを作成します ’com.tutorialspoin.eclipselink.entity’ バジョ ‘src’ パケ。 Crear una clase denominada Department.java bajo dado paquete。 La clase entidad departamento se muestra como sigue:

package com.finddevguides.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;
   }
}

Crear la segunda entidad en estarelación-clasede entidad empleado、denominada Employee.java bajo ‘com.finddevguides.eclipselink.entity’ paquete。 La Clase de entidad empleado se muestra como sigue:

package com.finddevguides.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のアーカイブは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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">

   <persistence-unit name="Eclipselink_JPA" transaction-type="RESOURCE_LOCAL">

      <class>com.finddevguides.eclipselink.entity.Employee</class>
      <class>com.finddevguides.eclipselink.entity.Department</class>

      <properties>
         <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpadb"/>
         <property name="javax.persistence.jdbc.user" value="root"/>
         <property name="javax.persistence.jdbc.password" value="root"/>
         <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
         <property name="eclipselink.logging.level" value="FINE"/>
         <property name="eclipselink.ddl-generation" value="create-tables"/>
      </properties>

   </persistence-unit>
</persistence>

Clases de servicio

保守的なサービスのクラスは、一部の相対的な概念に基づいて実装されています。 Crear un paquete bajo ‘src’ paquete denominado ‘com.finddevguides.eclipselink.service’ 。 La clase DAO llamada OneToMany.java se crea bajo dado paquete。 La clase DAO se muestra como sigue:

package com.finddevguideseclipselink.service;

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

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

import com.finddevguides.eclipselink.entity.Department;
import com.finddevguides.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の相互コンサルティングコンサルタント部門とタブラ部門部門の従業員の最も一般的な組み合わせ:

Select * from department_Id;
Department_ID Employee_Eid
254 251
254 252
254 253

前のタブラ、 department_id および employee_id 息子のclaves externas(campos de referencia)de departamento y empleado tablas。

MySQLの相互比較コンサルティングと、タブラ部門の結果の一覧表の作成

Select *from department;
ID Nombre
254 Desarrollo

MySQLのインターファスに関するコンサルティングを開始し、従業員のタブラ従業員の結果を視覚的に表示します。

Select* from employee;
Eid Deg Ename Salary
251 Technical Writer Satish 45000
252 Technical Writer Krishna 45000
253 Technical Writer Masthanwali 50000

@OneToOneリレーション

En unarelaciónuno-a-uno、un elemento puede vincularse alúnicootro elemento。 フィジー・デ・ウナ・エンティダードの重要な意味

検討前のエル・イェメンプロを許可しません。 エンペラード *y デパルタメント*デ・マネラ・ユニディレクション・インバーサ、ラ・レラシオン・エス・レラシオン・ウノ・ア・ウノ シグニフィカケカダエンペラードペルテネスアルデパルタメントデソラ。 JPA en eclipse IDE llamado JPA_Eclipselink_OTO を作成します。 一連の試験の予定があります。

Creaciónde entidades

Siga el anterior dado diagrama para lacreaciónde entidades。 パケテデノミナドを作成します ’com.tutorialspoin.eclipselink.entity’ バジョ ‘src’ パケ。 Crear una clase denominada Department.java bajo dado el paquete。 La clase entidad departamento se muestra como sigue:

package com.finddevguides.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;
    }
}

Crear la segunda entidad en estarelación-clasede entidad Employee、denominada Employee.java en paquete 'com.finddevguides.eclipselink.entity' 。 La Clase de entidad empleado se muestra como sigue:

package com.finddevguides.eclipselink.entity;

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

@Entity
public class Employee
{
   @Id
   @GeneratedValue( strategy= GenerationType.AUTO )
   private int eid;
   private String ename;
   private double salary;
   private String deg;

   @OneToOne
   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 siguiente maneraアーカイブ:

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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">

   <persistence-unit name="Eclipselink_JPA" transaction-type="RESOURCE_LOCAL">

      <class>com.finddevguides.eclipselink.entity.Employee</class>
      <class>com.finddevguides.eclipselink.entity.Department</class>

      <properties>
         <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpadb"/>
         <property name="javax.persistence.jdbc.user" value="root"/>
         <property name="javax.persistence.jdbc.password" value="root"/>
         <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
         <property name="eclipselink.logging.level" value="FINE"/>
         <property name="eclipselink.ddl-generation" value="create-tables"/>
      </properties>

   </persistence-unit>
</persistence>

Clases de servicio

Crear un paquete debajo del paquete 'src' llamado 'com.finddevguides.eclipselink.service' 。 La clase DAO llamada OneToOne.java se crea bajo el paquete determinado。 La clase DAO se muestra como sigue:

package com.finddevguideseclipselink.service;

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

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

public class OneToOne
{
   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 Employee Entity
      Employee employee = new Employee();
      employee.setEname("Satish");
      employee.setSalary(45000.0);
      employee.setDeg("Technical Writer");
      employee.setDepartment(department);

     //Store Employee
      entitymanager.persist(employee);

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

Eclipse IDEのコンソラパネルの事前通知に関する事前プログラミングのプログラムの説明。 Para la salida、compruebe los siguientes MySQL workbench。

En el ejemplo anterior、se crean dos tablas。 MySQLの相互相談コンサルタントとタブラ部門の視覚的結果の表示:

Select *from department
ID nombre
301 desarrollo

MySQLの対話型コンサルティングのコンサルティングとタブラの結果の視覚化

Select* from employee
Eid Deg Ename Salary Department_id
302 Technical Writer Satish 45000 301

@ManyToMany関係

Relaciónde varios a varios es donde una omásfilas de una entidad se asocian amásde una fila en otra entidad。

関係者の皆様への配慮: clase y profesor 。 マニラ・ビデレクシオナル、タント・クラス・コモ教授ティエネン・ムコス、ウノ・リラシオン。 Que significa que cada registro de clase es referido por el profesor(ids de profesor)、que debe ser primaria llaves en la mesa del profesor y almacenados en la tabla Teacher_Class y viceversa。 Aquí、la tabla Teachers_Class contiene los campos claves extranjeros。 JPA en eclipse IDE llamado JPA_Eclipselink_MTM を作成します。 一連の試験の予定があります。

Muchos a muchosRelación

Creaciónde entidades

Crear entidades siguiendo el esquema que se muestra en el diagrama de arriba。 パケテデノミナドを作成 'com.tutorialspoin.eclipselink.entity' bajo 'src' paquete Crear una clase denominada Clas.java bajo dado el paquete。 La clase entidad departamento se muestra como sigue:

package com.finddevguides.eclipselink.entity;

import java.util.Set;

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

@Entity
public class Clas
{
   @Id
   @GeneratedValue( strategy = GenerationType.AUTO )
   private int cid;
   private String cname;

   @ManyToMany(targetEntity=Teacher.class)
   private Set teacherSet;

   public Clas()
   {
      super();
   }

   public Clas(int cid, String cname, Set teacherSet)
   {
      super();
      this.cid = cid;
      this.cname = cname;
      this.teacherSet = teacherSet;
   }

   public int getCid()
   {
      return cid;
   }

   public void setCid(int cid)
   {
      this.cid = cid;
   }

   public String getCname()
   {
      return cname;
   }

   public void setCname(String cname)
   {
      this.cname = cname;
   }

   public Set getTeacherSet()
   {
      return teacherSet;
   }

   public void setTeacherSet(Set teacherSet)
   {
      this.teacherSet = teacherSet;
   }
}

Crear la segunda entidad en estarelación-clasede entidad従業員、denominada Teacher.java en paquete 'com.finddevguides.eclipselink.entity' 。 La Clase de entidad empleado se muestra como sigue:

package com.finddevguides.eclipselink.entity;

import java.util.Set;

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

@Entity
public class Teacher
{
   @Id
   @GeneratedValue( strategy = GenerationType.AUTO )
   private int tid;
   private String tname;
   private String subject;

   @ManyToMany(targetEntity=Clas.class)
   private Set clasSet;

   public Teacher()
   {
      super();
   }

   public Teacher(int tid, String tname, String subject, Set clasSet)
   {
      super();
      this.tid = tid;
      this.tname = tname;
      this.subject = subject;
      this.clasSet = clasSet;
   }

   public int getTid()
   {
      return tid;
   }

   public void setTid(int tid)
   {
      this.tid = tid;
   }

   public String getTname()
   {
      return tname;
   }

   public void setTname(String tname)
   {
      this.tname = tname;
   }

   public String getSubject()
   {
      return subject;
   }

   public void setSubject(String subject)
   {
      this.subject = subject;
   }

   public Set getClasSet()
   {
      return clasSet;
   }

   public void setClasSet(Set clasSet)
   {
      this.clasSet = clasSet;
   }
}

Persistence.xml

Persistence.xml siguiente maneraアーカイブ:

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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">

   <persistence-unit name="Eclipselink_JPA" transaction-type="RESOURCE_LOCAL">
      <class>com.finddevguides.eclipselink.entity.Employee</class>
      <class>com.finddevguides.eclipselink.entity.Department</class>

      <properties>
         <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpadb"/>
         <property name="javax.persistence.jdbc.user" value="root"/>
         <property name="javax.persistence.jdbc.password" value="root"/>
         <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
         <property name="eclipselink.logging.level" value="FINE"/>
         <property name="eclipselink.ddl-generation" value="create-tables"/>
      </properties>

   </persistence-unit>
</persistence>

Clases de servicio

Crear un paquete debajo del paquete 'src' llamado 'com.finddevguides.eclipselink.service' 。 La clase DAO llamada ManyToMany.java se crea bajo dado paquete。 La clase DAO se muestra como sigue:

package com.finddevguides.eclipselink.service;

import java.util.HashSet;
import java.util.Set;

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

import com.finddevguides.eclipselink.entity.Clas;
import com.finddevguides.eclipselink.entity.Teacher;

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

     //Create Clas Entity
      Clas clas1=new Clas(0,"1st",null);
      Clas clas2=new Clas(0,"2nd",null);
      Clas clas3=new Clas(0,"3rd",null);

     //Store Clas
      entitymanager.persist(clas1);
      entitymanager.persist(clas2);
      entitymanager.persist(clas3);

     //Create Clas Set1
      Set<Clas> classSet1 = new HashSet();
      classSet1.add(clas1);
      classSet1.add(clas2);
      classSet1.add(clas3);

     //Create Clas Set2
      Set<Clas> classSet2 = new HashSet();
      classSet2.add(clas3);
      classSet2.add(clas1);
      classSet2.add(clas2);

     //Create Clas Set3
      Set<Clas> classSet3 = new HashSet();
      classSet3.add(clas2);
      classSet3.add(clas3);
      classSet3.add(clas1);

     //Create Teacher Entity
      Teacher teacher1 = new Teacher(0, "Satish", "Java", classSet1);
      Teacher teacher2 = new Teacher(0, "Krishna", "Adv Java", classSet2);
      Teacher teacher3 = new Teacher(0, "Masthanvali", "DB2", classSet3);

     //Store Teacher
      entitymanager.persist(teacher1);
      entitymanager.persist(teacher2);
      entitymanager.persist(teacher3);

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

イエメンプロのプロジェクト、シーラスラストレスタブラス。 MySQLの相互コンサルティングのコンサルティングと、タブラの教師の結果

Select * form teacher_clas
Teacher_tid Classet_cid
354 351
355 351
356 351
354 352
355 352
356 352
354 353
355 353
356 353

タブラの前部*教師_tid es la clave外部タブラマエストラ、y classet_cid *es la clave externa de laタブラデラクラス Por lo tanto diferentes maestros se asignan a diferentes clase

MySQLの相互相談コンサルタントと教授の最も重要な結果:

Select* from teacher
Tid Subject Tname
354 Java Satish
355 Adv Java Krishna
356 DB2 Masthanvali

MySQLの相互接続に関するコンサルティングと、 clase のタブラアパレセラデラシギエンテマネラ:

Select * from clas
Cid Cname
351 1st
352 2nd
353 3rd