விளக்கம்
ஒரு தரவுத்தளத்தில் ஒரு வகுப்பு படிநிலையை சேமிப்பதற்கான மற்றொரு உத்தி இணைந்த அட்டவணை என்று அழைக்கப்படுகிறது. இதற்கு ஒரு சிறப்பு குறிப்பு உள்ளது:
@Inheritance(strategy = InheritanceType.JOINED)
எங்கள் வகுப்புகளின் எடுத்துக்காட்டு:
@Inheritance(strategy = InheritanceType.JOINED)
@Entity
class User {
int id;
String name;
LocalDate birthday;
}
@Entity
class Employee extends User {
String occupation;
int salary;
LocalDate join;
}
@Entity
class Client extends User {
String address;
}
இந்த சிறுகுறிப்பைப் பயன்படுத்தும் போது, ஒவ்வொரு வகுப்புக்கும் அதன் துணைப்பிரிவுகளுக்கும் தரவுத்தளத்தில் ஒரு தனி அட்டவணையை Hibernate எதிர்பார்க்கும். அவற்றிலிருந்து தரவைத் தேர்ந்தெடுக்கும்போது, நீங்கள் SQL JOIN ஆபரேட்டரைப் பயன்படுத்த வேண்டும்.
தரவுத்தள திட்ட உதாரணம்:
CREATE TABLE user {
id INT,
name VARCHAR,
birthday DATE
}
CREATE TABLE employee {
id INT,
occupation VARCHAR,
salary INT,
join DATE
}
CREATE TABLE client {
id INT,
address VARCHAR
}
டேபிளிலிருந்து சில கிளையண்டின் தரவைப் பெற நீங்கள் முடிவு செய்தால், அட்டவணையில் சேர ஹைபர்னேட் JOIN ஐப் பயன்படுத்த வேண்டும்:
SELECT u.id, u.name, u.birthday, c.address FROM user u JOIN client c ON u.id = c.id;
@PrimaryKeyJoinColumn
குழந்தை நிறுவன வகுப்புகள் அட்டவணையில் ஒரு நெடுவரிசையைக் கொண்டுள்ளன, இது பெற்றோர் நிறுவன வகுப்பின் பொருள் ஐடியைக் குறிக்கிறது. இந்த நெடுவரிசையின் பெயர் இயல்பாக பெற்றோர் வகுப்பின் நெடுவரிசையின் பெயருக்கு சமமாக இருக்கும்.
உதாரணமாக:
@Inheritance(strategy = InheritanceType.JOINED)
@Entity
class User {
@Id
int user_identifier;
String name;
LocalDate birthday;
}
@Entity
class Employee extends User {
String occupation;
int salary;
LocalDate join;
}
@Entity
class Client extends User {
String address;
}
பின்னர் தரவுத்தள அட்டவணை இப்படி இருக்கும்:
CREATE TABLE user {
user_identifier INT,
name VARCHAR,
birthday DATE
}
CREATE TABLE employee {
user_identifier INT,
occupation VARCHAR,
salary INT,
join DATE
}
CREATE TABLE client {
user_identifier INT,
address VARCHAR
}
சார்பு அட்டவணையில் நெடுவரிசைப் பெயரை மேலெழுத விரும்பினால், @PrimaryKeyJoinColumn சிறுகுறிப்பைப் பயன்படுத்த வேண்டும் . உதாரணமாக:
@Inheritance(strategy = InheritanceType.JOINED)
@Entity
class User {
@Id
int user_identifier;
String name;
LocalDate birthday;
}
@Entity
@PrimaryKeyJoinColumn(name=”user_id”)
class Employee extends User {
String occupation;
int salary;
LocalDate join;
}
@Entity
@PrimaryKeyJoinColumn(name=”user_id2”)
class Client extends User {
String address;
}
பின்னர் தரவுத்தள அட்டவணை இப்படி இருக்கும்:
CREATE TABLE user {
user_identifier INT,
name VARCHAR,
birthday DATE
}
CREATE TABLE employee {
user_id INT,
occupation VARCHAR,
salary INT,
join DATE
}
CREATE TABLE client {
user_id2 INT,
address VARCHAR
}
GO TO FULL VERSION