JPA - การแมปขั้นสูง
JPA เป็นไลบรารีที่เผยแพร่พร้อมข้อกำหนดจาวา ดังนั้นจึงสนับสนุนแนวคิดเชิงวัตถุทั้งหมดสำหรับการคงอยู่ของเอนทิตี จนถึงตอนนี้เราได้ทำพื้นฐานของการทำแผนที่เชิงสัมพันธ์กันเรียบร้อยแล้ว บทนี้จะนำคุณไปสู่การแมปขั้นสูงระหว่างอ็อบเจ็กต์และเอนทิตีเชิงสัมพันธ์
กลยุทธ์การสืบทอด
การสืบทอดเป็นแนวคิดหลักของภาษาเชิงวัตถุดังนั้นเราจึงสามารถใช้ความสัมพันธ์หรือกลยุทธ์การสืบทอดระหว่างเอนทิตี JPA รองรับกลยุทธ์การสืบทอดสามประเภทเช่น SINGLE_TABLE, JOINED_TABLE และ TABLE_PER_CONCRETE_CLASS
ให้เราพิจารณาตัวอย่างของชั้นเรียน Staff, TeachingStaff, NonTeachingStaff และความสัมพันธ์ของพวกเขาดังต่อไปนี้:
ในแผนภาพที่แสดงด้านบน Staff คือเอนทิตีและ TeachingStaff และ NonTeachingStaff เป็นเอนทิตีย่อยของ Staff ในที่นี้เราจะกล่าวถึงตัวอย่างข้างต้นในกลยุทธ์การสืบทอดทั้งสามประการ
กลยุทธ์ตารางเดียว
กลยุทธ์ Single-Table จะใช้ฟิลด์คลาสทั้งหมด (ทั้งคลาสซุปเปอร์และคลาสย่อย) และแมปลงในตารางเดียวที่เรียกว่ากลยุทธ์ SINGLE_TABLE ค่าตัวเลือกที่นี่มีบทบาทสำคัญในการแยกแยะค่าของสามเอนทิตีในตารางเดียว
ให้เราพิจารณาตัวอย่างข้างต้น TeachingStaff และ NonTeachingStaff เป็นคลาสย่อยของเจ้าหน้าที่ประจำชั้น เตือนแนวคิดเรื่องการสืบทอด (เป็นกลไกของการสืบทอดคุณสมบัติของซุปเปอร์คลาสโดยคลาสย่อย) ดังนั้น sid sname คือฟิลด์ที่เป็นของทั้ง TeachingStaff และ NonTeachingStaff สร้างโครงการ JPA โมดูลทั้งหมดของโครงการนี้มีดังนี้:
การสร้างเอนทิตี
สร้างแพ็คเกจชื่อ ‘com.tutorialspoint.eclipselink.entity’ ภายใต้ ‘src’แพ็คเกจ สร้างคลาส java ใหม่ชื่อStaff.javaภายใต้แพ็คเกจที่กำหนด คลาสเอนทิตีพนักงานแสดงดังนี้:
package com.tutorialspoint.eclipselink.entity;
import java.io.Serializable;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
@Entity
@Table
@Inheritance( strategy = InheritanceType.SINGLE_TABLE )
@DiscriminatorColumn( name = "type" )
public class Staff implements Serializable {
@Id
@GeneratedValue( strategy = GenerationType.AUTO )
private int sid;
private String sname;
public Staff( int sid, String sname ) {
super( );
this.sid = sid;
this.sname = sname;
}
public Staff( ) {
super( );
}
public int getSid( ) {
return sid;
}
public void setSid( int sid ) {
this.sid = sid;
}
public String getSname( ) {
return sname;
}
public void setSname( String sname ) {
this.sname = sname;
}
}
ในรหัสด้านบน @DescriminatorColumn ระบุชื่อฟิลด์ (type) และค่าของมันจะแสดงฟิลด์ (Teaching and NonTeachingStaff) ที่เหลือ
สร้างคลาสย่อย (คลาส) ไปยังคลาส Staff ที่ชื่อ TeachingStaff.java ภายใต้ com.tutorialspoint.eclipselink.entityแพ็คเกจ คลาส TeachingStaff Entity แสดงดังนี้:
package com.tutorialspoint.eclipselink.entity;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue( value="TS" )
public class TeachingStaff extends Staff {
private String qualification;
private String subjectexpertise;
public TeachingStaff( int sid, String sname,
String qualification,String subjectexpertise ) {
super( sid, sname );
this.qualification = qualification;
this.subjectexpertise = subjectexpertise;
}
public TeachingStaff( ) {
super( );
}
public String getQualification( ){
return qualification;
}
public void setQualification( String qualification ){
this.qualification = qualification;
}
public String getSubjectexpertise( ) {
return subjectexpertise;
}
public void setSubjectexpertise( String subjectexpertise ){
this.subjectexpertise = subjectexpertise;
}
}
สร้างคลาสย่อย (คลาส) ไปยังคลาส Staff ที่ชื่อ NonTeachingStaff.java ภายใต้ com.tutorialspoint.eclipselink.entityแพ็คเกจ คลาส NonTeachingStaff Entity แสดงดังนี้:
package com.tutorialspoint.eclipselink.entity;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue( value = "NS" )
public class NonTeachingStaff extends Staff {
private String areaexpertise;
public NonTeachingStaff( int sid, String sname, String areaexpertise ) {
super( sid, sname );
this.areaexpertise = areaexpertise;
}
public NonTeachingStaff( ) {
super( );
}
public String getAreaexpertise( ) {
return areaexpertise;
}
public void setAreaexpertise( String areaexpertise ){
this.areaexpertise = areaexpertise;
}
}
Persistence.xml
ไฟล์ Persistence.xml มีข้อมูลคอนฟิกูเรชันของฐานข้อมูลและข้อมูลการลงทะเบียนของคลาสเอนทิตี ไฟล์ 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.tutorialspoint.eclipselink.entity.Staff</class>
<class>com.tutorialspoint.eclipselink.entity.NonTeachingStaff</class>
<class>com.tutorialspoint.eclipselink.entity.TeachingStaff</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>
ชั้นบริการ
คลาสบริการเป็นส่วนหนึ่งของการดำเนินการขององค์ประกอบทางธุรกิจ สร้างแพ็คเกจภายใต้‘src’ ชื่อแพ็คเกจ ‘com.tutorialspoint.eclipselink.service’.
สร้างคลาสชื่อ SaveClient.java ภายใต้แพ็กเกจที่กำหนดเพื่อเก็บฟิลด์คลาส Staff, TeachingStaff และ NonTeachingStaff คลาส SaveClient แสดงดังนี้:
package com.tutorialspoint.eclipselink.service;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import com.tutorialspoint.eclipselink.entity.NonTeachingStaff;
import com.tutorialspoint.eclipselink.entity.TeachingStaff;
public class SaveClient {
public static void main( String[ ] args ) {
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
EntityManager entitymanager = emfactory.createEntityManager( );
entitymanager.getTransaction( ).begin( );
//Teaching staff entity
TeachingStaff ts1=new TeachingStaff(1,"Gopal","MSc MEd","Maths");
TeachingStaff ts2=new TeachingStaff(2, "Manisha", "BSc BEd", "English");
//Non-Teaching Staff entity
NonTeachingStaff nts1=new NonTeachingStaff(3, "Satish", "Accounts");
NonTeachingStaff nts2=new NonTeachingStaff(4, "Krishna", "Office Admin");
//storing all entities
entitymanager.persist(ts1);
entitymanager.persist(ts2);
entitymanager.persist(nts1);
entitymanager.persist(nts2);
entitymanager.getTransaction().commit();
entitymanager.close();
emfactory.close();
}
}
หลังจากรวบรวมและดำเนินการโปรแกรมข้างต้นคุณจะได้รับการแจ้งเตือนในแผงคอนโซลของ Eclipse IDE ตรวจสอบ MySQL workbench สำหรับเอาต์พุต ผลลัพธ์ในรูปแบบตารางจะแสดงดังนี้:
ซิด | ประเภท | Sname | Areaexpertise | คุณสมบัติ | เรื่องความเชี่ยวชาญ |
---|---|---|---|---|---|
1 | TS | โกปาล | MSC MED | คณิตศาสตร์ | |
2 | TS | มานิชา | บีเอสซีเบด | ภาษาอังกฤษ | |
3 | NS | Satish | บัญชี | ||
4 | NS | กฤษณะ | ผู้ดูแลระบบสำนักงาน |
ในที่สุดคุณจะได้รับตารางเดียวซึ่งมีทั้งสามเขตข้อมูลของคลาสและแตกต่างกับคอลัมน์ตัวเลือกที่ชื่อ ‘Type’ (สนาม).
เข้าร่วมกลยุทธ์ตาราง
กลยุทธ์ตารางที่เข้าร่วมคือการแบ่งปันคอลัมน์ที่อ้างอิงซึ่งมีค่าเฉพาะเพื่อเข้าร่วมตารางและทำธุรกรรมได้ง่าย ให้เราพิจารณาตัวอย่างเดียวกับด้านบน
สร้างโครงการ JPA โมดูลโครงการทั้งหมดที่แสดงดังต่อไปนี้:
การสร้างเอนทิตี
สร้างแพ็คเกจชื่อ ‘com.tutorialspoint.eclipselink.entity’ ภายใต้ ‘src’แพ็คเกจ สร้างคลาส java ใหม่ชื่อStaff.javaภายใต้แพ็คเกจที่กำหนด คลาสเอนทิตีพนักงานแสดงดังนี้:
package com.tutorialspoint.eclipselink.entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
@Entity
@Table
@Inheritance( strategy = InheritanceType.JOINED )
public class Staff implements Serializable {
@Id
@GeneratedValue( strategy = GenerationType.AUTO )
private int sid;
private String sname;
public Staff( int sid, String sname ) {
super( );
this.sid = sid;
this.sname = sname;
}
public Staff( ) {
super( );
}
public int getSid( ) {
return sid;
}
public void setSid( int sid ) {
this.sid = sid;
}
public String getSname( ) {
return sname;
}
public void setSname( String sname ) {
this.sname = sname;
}
}
สร้างคลาสย่อย (คลาส) ไปยังคลาส Staff ที่ชื่อ TeachingStaff.java ภายใต้ com.tutorialspoint.eclipselink.entityแพ็คเกจ คลาส TeachingStaff Entity แสดงดังนี้:
package com.tutorialspoint.eclipselink.entity;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@PrimaryKeyJoinColumn(referencedColumnName="sid")
public class TeachingStaff extends Staff {
private String qualification;
private String subjectexpertise;
public TeachingStaff( int sid, String sname,
String qualification,String subjectexpertise ) {
super( sid, sname );
this.qualification = qualification;
this.subjectexpertise = subjectexpertise;
}
public TeachingStaff( ) {
super( );
}
public String getQualification( ){
return qualification;
}
public void setQualification( String qualification ){
this.qualification = qualification;
}
public String getSubjectexpertise( ) {
return subjectexpertise;
}
public void setSubjectexpertise( String subjectexpertise ){
this.subjectexpertise = subjectexpertise;
}
}
สร้างคลาสย่อย (คลาส) ไปยังคลาส Staff ที่ชื่อ NonTeachingStaff.java ภายใต้ com.tutorialspoint.eclipselink.entityแพ็คเกจ คลาส NonTeachingStaff Entity แสดงดังนี้:
package com.tutorialspoint.eclipselink.entity;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@PrimaryKeyJoinColumn(referencedColumnName="sid")
public class NonTeachingStaff extends Staff {
private String areaexpertise;
public NonTeachingStaff( int sid, String sname, String areaexpertise ) {
super( sid, sname );
this.areaexpertise = areaexpertise;
}
public NonTeachingStaff( ) {
super( );
}
public String getAreaexpertise( ) {
return areaexpertise;
}
public void setAreaexpertise( String areaexpertise ) {
this.areaexpertise = areaexpertise;
}
}
Persistence.xml
ไฟล์ Persistence.xml มีข้อมูลคอนฟิกูเรชันของฐานข้อมูลและข้อมูลการลงทะเบียนของคลาสเอนทิตี ไฟล์ 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.tutorialspoint.eclipselink.entity.Staff</class>
<class>com.tutorialspoint.eclipselink.entity.NonTeachingStaff</class>
<class>com.tutorialspoint.eclipselink.entity.TeachingStaff</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>
ชั้นบริการ
คลาสบริการเป็นส่วนหนึ่งของการดำเนินการขององค์ประกอบทางธุรกิจ สร้างแพ็คเกจภายใต้‘src’ ชื่อแพ็คเกจ ‘com.tutorialspoint.eclipselink.service’.
สร้างคลาสชื่อ SaveClient.java ภายใต้แพ็กเกจที่กำหนดเพื่อเก็บฟิลด์คลาส Staff, TeachingStaff และ NonTeachingStaff จากนั้นคลาส SaveClient ดังนี้:
package com.tutorialspoint.eclipselink.service;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import com.tutorialspoint.eclipselink.entity.NonTeachingStaff;
import com.tutorialspoint.eclipselink.entity.TeachingStaff;
public class SaveClient {
public static void main( String[ ] args ) {
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
EntityManager entitymanager = emfactory.createEntityManager( );
entitymanager.getTransaction( ).begin( );
//Teaching staff entity
TeachingStaff ts1 = new TeachingStaff(1,"Gopal","MSc MEd","Maths");
TeachingStaff ts2 = new TeachingStaff(2, "Manisha", "BSc BEd", "English");
//Non-Teaching Staff entity
NonTeachingStaff nts1 = new NonTeachingStaff(3, "Satish", "Accounts");
NonTeachingStaff nts2 = new NonTeachingStaff(4, "Krishna", "Office Admin");
//storing all entities
entitymanager.persist(ts1);
entitymanager.persist(ts2);
entitymanager.persist(nts1);
entitymanager.persist(nts2);
entitymanager.getTransaction().commit();
entitymanager.close();
emfactory.close();
}
}
หลังจากรวบรวมและดำเนินการโปรแกรมข้างต้นคุณจะได้รับการแจ้งเตือนในแผงคอนโซลของ Eclipse IDE สำหรับผลลัพธ์ตรวจสอบ MySQL workbench ดังต่อไปนี้:
ที่นี่สามตารางถูกสร้างขึ้นและผลลัพธ์ของ staff ตารางในรูปแบบตารางจะแสดงดังนี้:
ซิด | Dtype | Sname |
---|---|---|
1 | การสอน | โกปาล |
2 | การสอน | มานิชา |
3 | NonTeachingStaff | Satish |
4 | NonTeachingStaff | กฤษณะ |
ผลของ TeachingStaff ตารางในรูปแบบตารางจะแสดงดังนี้:
ซิด | คุณสมบัติ | เรื่องความเชี่ยวชาญ |
---|---|---|
1 | MSC MED | คณิตศาสตร์ |
2 | บีเอสซีเบด | ภาษาอังกฤษ |
ในตารางด้านบนคือคีย์ต่างประเทศ (ตารางเจ้าหน้าที่ฟอร์มฟิลด์อ้างอิง) ผลลัพธ์ของ NonTeachingStaff ตารางในรูปแบบตารางจะแสดงดังนี้:
ซิด | Areaexpertise |
---|---|
3 | บัญชี |
4 | ผู้ดูแลระบบสำนักงาน |
ในที่สุดตารางทั้งสามจะถูกสร้างขึ้นโดยใช้ฟิลด์ตามลำดับและฟิลด์ SID ถูกแชร์โดยทั้งสามตาราง ในตารางพนักงาน SID เป็นคีย์หลักในตารางที่เหลือ (TeachingStaff และ NonTeachingStaff) SID เป็นคีย์ต่างประเทศ
ตารางต่อชั้นเรียน
กลยุทธ์ตารางต่อคลาสคือการสร้างตารางสำหรับแต่ละเอนทิตีย่อย ตารางเจ้าหน้าที่จะถูกสร้างขึ้น แต่จะมีระเบียนว่าง ค่าฟิลด์ของตารางพนักงานต้องแชร์โดยตาราง TeachingStaff และ NonTeachingStaff
ให้เราพิจารณาตัวอย่างเดียวกับด้านบน โมดูลทั้งหมดของโครงการนี้แสดงดังต่อไปนี้:
การสร้างเอนทิตี
สร้างแพ็คเกจชื่อ ‘com.tutorialspoint.eclipselink.entity’ ภายใต้ ‘src’แพ็คเกจ สร้างคลาส java ใหม่ชื่อStaff.javaภายใต้แพ็คเกจที่กำหนด คลาสเอนทิตีพนักงานแสดงดังนี้:
package com.tutorialspoint.eclipselink.entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
@Entity
@Table
@Inheritance( strategy = InheritanceType.TABLE_PER_CLASS )
public class Staff implements Serializable {
@Id
@GeneratedValue( strategy = GenerationType.AUTO )
private int sid;
private String sname;
public Staff( int sid, String sname ) {
super( );
this.sid = sid;
this.sname = sname;
}
public Staff( ) {
super( );
}
public int getSid( ) {
return sid;
}
public void setSid( int sid ) {
this.sid = sid;
}
public String getSname( ) {
return sname;
}
public void setSname( String sname ) {
this.sname = sname;
}
}
สร้างคลาสย่อย (คลาส) ไปยังคลาส Staff ที่ชื่อ TeachingStaff.java ภายใต้ com.tutorialspoint.eclipselink.entityแพ็คเกจ คลาส TeachingStaff Entity แสดงดังนี้:
package com.tutorialspoint.eclipselink.entity;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
public class TeachingStaff extends Staff {
private String qualification;
private String subjectexpertise;
public TeachingStaff( int sid, String sname, String qualification, String subjectexpertise ) {
super( sid, sname );
this.qualification = qualification;
this.subjectexpertise = subjectexpertise;
}
public TeachingStaff( ) {
super( );
}
public String getQualification( ){
return qualification;
}
public void setQualification( String qualification ) {
this.qualification = qualification;
}
public String getSubjectexpertise( ) {
return subjectexpertise;
}
public void setSubjectexpertise( String subjectexpertise ){
this.subjectexpertise = subjectexpertise;
}
}
สร้างคลาสย่อย (คลาส) ไปยังคลาส Staff ที่ชื่อ NonTeachingStaff.java ภายใต้ com.tutorialspoint.eclipselink.entityแพ็คเกจ คลาส NonTeachingStaff Entity แสดงดังนี้:
package com.tutorialspoint.eclipselink.entity;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
public class NonTeachingStaff extends Staff {
private String areaexpertise;
public NonTeachingStaff( int sid, String sname, String areaexpertise ) {
super( sid, sname );
this.areaexpertise = areaexpertise;
}
public NonTeachingStaff( ) {
super( );
}
public String getAreaexpertise( ) {
return areaexpertise;
}
public void setAreaexpertise( String areaexpertise ) {
this.areaexpertise = areaexpertise;
}
}
Persistence.xml
ไฟล์ Persistence.xml มีข้อมูลคอนฟิกูเรชันของฐานข้อมูลและข้อมูลการลงทะเบียนของคลาสเอนทิตี ไฟล์ 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.tutorialspoint.eclipselink.entity.Staff</class>
<class>com.tutorialspoint.eclipselink.entity.NonTeachingStaff</class>
<class>com.tutorialspoint.eclipselink.entity.TeachingStaff</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>
ชั้นบริการ
คลาสบริการเป็นส่วนหนึ่งของการดำเนินการขององค์ประกอบทางธุรกิจ สร้างแพ็คเกจภายใต้‘src’ ชื่อแพ็คเกจ ‘com.tutorialspoint.eclipselink.service’.
สร้างคลาสชื่อ SaveClient.javaภายใต้แพ็คเกจที่กำหนดเพื่อจัดเก็บฟิลด์คลาส Staff, TeachingStaff และ NonTeachingStaff คลาส SaveClient แสดงดังนี้:
package com.tutorialspoint.eclipselink.service;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import com.tutorialspoint.eclipselink.entity.NonTeachingStaff;
import com.tutorialspoint.eclipselink.entity.TeachingStaff;
public class SaveClient {
public static void main( String[ ] args ) {
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory( "Eclipselink_JPA" );
EntityManager entitymanager = emfactory.createEntityManager( );
entitymanager.getTransaction( ).begin( );
//Teaching staff entity
TeachingStaff ts1 = new TeachingStaff(1,"Gopal","MSc MEd","Maths");
TeachingStaff ts2 = new TeachingStaff(2, "Manisha", "BSc BEd", "English");
//Non-Teaching Staff entity
NonTeachingStaff nts1 = new NonTeachingStaff(3, "Satish", "Accounts");
NonTeachingStaff nts2 = new NonTeachingStaff(4, "Krishna", "Office Admin");
//storing all entities
entitymanager.persist(ts1);
entitymanager.persist(ts2);
entitymanager.persist(nts1);
entitymanager.persist(nts2);
entitymanager.getTransaction().commit();
entitymanager.close();
emfactory.close();
}
}
หลังจากรวบรวมและดำเนินการโปรแกรมข้างต้นคุณจะได้รับการแจ้งเตือนในแผงคอนโซลของ Eclipse IDE สำหรับเอาต์พุตตรวจสอบ MySQL workbench ดังต่อไปนี้:
ที่นี่มีการสร้างตารางสามตารางและไฟล์ Staff ตารางมีระเบียนว่าง
ผลของ TeachingStaff ในรูปแบบตารางจะแสดงดังนี้:
ซิด | คุณสมบัติ | Sname | เรื่องความเชี่ยวชาญ |
---|---|---|---|
1 | MSC MED | โกปาล | คณิตศาสตร์ |
2 | บีเอสซีเบด | มานิชา | ภาษาอังกฤษ |
ตารางด้านบน TeachingStaff ประกอบด้วยฟิลด์ของทั้ง Staff และ TeachingStaff Entities
ผลของ NonTeachingStaff ในรูปแบบตารางจะแสดงดังนี้:
ซิด | Areaexpertise | Sname |
---|---|---|
3 | บัญชี | Satish |
4 | ผู้ดูแลระบบสำนักงาน | กฤษณะ |
ตารางด้านบน NonTeachingStaff ประกอบด้วยฟิลด์ของทั้ง Staff และ NonTeachingStaff Entities