مشخصات مقاله
-
1021
-
0.0
-
2613
-
0
-
0
درس پانزدهم : آموزش مدل نگاشت Table Per Concrete Class با استفاده از فایل xml
آموزش مدل نگاشت Table Per Concrete Class با استفاده از فایل xml
Cدر مدل نگاشت Table Per Concrete Class ، به ازای هر کلاس برنامه یک جدول در پایگاه داده ایجاد می شود که این جدول ها، هیچ نوع ارتباطی با هم ندارند. دو راه برای اتصال و ایجاد ارتباط بین جدول (Table) و مدل نگاشت Table Per Concrete Class وجود دارد که عبارتند از :
- استفاده از المنت Unio-Subclass.
- به وسیله ایجاد خود به خودی جدول برای هر کلاس.
ابتدا، بیایید نگاهی به کلاس های مثال درس و سلسله مراتب وراثت در آن ها بیاندازیم. دیاگرام زیر نشان دهنده کلاس ها و خواص آن هاست :

در کد فایل زیر، به وسیله المنت Union-subclass عمل نگاشت و آدرس دهی سلسله مراتب (hierarchy) را نشان داده ایم. ابتدا به مطالعه کد بپردازید، سپس به تشریح بخش های آن خواهیم پرداخت :
در مدل نگاشت Table Per Concrete Class، 3 جدول در پایگاه داده وجود خواهد داشت که هر کدام نماینده یکی از کلاس های برنامه است. زیرالمنت Union-Subclass، کلاس متعلق به جدول را تعیین می کند. این المنت، ستون های جدول Parent را به جدول اضافه کرده و همانند یک اتصال (Union) عمل می کند.
ساختار کلی هر یک از جدول های مثال به صورت زیر خواهد بود :
Table structure for Employee class

Table structure for Regular_Employee class

Table structure for Contract_Employee class
مثال عملی مدل نگاشت Table Per Concrete Class :
در این مثال عملی، 3 کلاس اصلی مثال را ایجاد کرده و سپس در فایل employee.bhm.xml، آدرس دهی و نگاشت (mapping) مورد نظر را انجام خواهیم داد.
1)ایجاد کلاس های Persistent Class :
در ابتدا شما بایستی کلاس های اصلی و خام را که تحت عنوان Persistent Class نامیده می شوند و وراثت را مشخص می سازند، ایجاد کنید. کد این 3 کلاس به ترتیب زیر است :
File: Employee.java
package com.javatpoint.mypackage;
public class Employee {
private int id;
private String name;
//getters and setters
}
File: Regular_Employee.java
package com.javatpoint.mypackage;
public class Regular_Employee extends Employee{
private float salary;
private int bonus;
//getters and setters
}
File: Contract_Employee.java
package com.javatpoint.mypackage;
public class Contract_Employee extends Employee{
private float pay_per_hour;
private String contract_duration;
//getters and setters
}
2)ایجاد فایل آدرس دهی (mapping) برای کلاس Persistent Class : نحوه آدرس دهی و نگاشت که در بخش قبل تشریح کردیم را به صورت زیر در فایل employee.bhm.xml تعیین می کنیم :
فایل : employee.bhm.xml
3)اضافه کردن آدرس دهی لازم جهت فایل hbm در فایل تنظیمات Configuration file :
فایل hibernate.xml را باز کرده و آدرس زیر را جهت mapping فایل hbm بر کد اضافه کنید :
اکنون کد فایل تنظیمات برنامه به صورت زیر خواهد شد :
update org.hibernate.dialect.Oracle9Dialect jdbc:oracle:thin:@localhost:1521:xe system oracle oracle.jdbc.driver.OracleDriver
نکته:
خاصیت hbm2ddl.anto جهت تولید خودکار جدول ها در پایگاه داده در فایل تنظیمات تعیین شده است.
4)ایجاد کلاس لازم جهت نگهداری مشی employee در پایگاه داده :
در کلاس زیر به نام storeData.java، اقدام به نگهداری اشیای employee در پایگاه داده (database) می کنیم :
File: StoreData.java
package com.javatpoint.mypackage;
import org.hibernate.*;
import org.hibernate.cfg.*;
public class StoreData {
public static void main(String[] args) {
Session session=new Configuration().configure("hibernate.cfg.xml")
.buildSessionFactory().openSession();
Transaction t=session.beginTransaction();
Employee e1=new Employee();
e1.setName("sonoo");
Regular_Employee e2=new Regular_Employee();
e2.setName("Vivek Kumar");
e2.setSalary(50000);
e2.setBonus(5);
Contract_Employee e3=new Contract_Employee();
e3.setName("Arjun Kumar");
e3.setPay_per_hour(1000);
e3.setContract_duration("15 hours");
session.persist(e1);
session.persist(e2);
session.persist(e3);
t.commit();
session.close();
System.out.println("success");
}
}
