वर्णन

डेटाबेसमध्ये वर्ग पदानुक्रम संचयित करण्यासाठी आणखी एक धोरण जॉइन केलेले टेबल म्हणतात. त्यासाठी एक विशेष भाष्य आहे:

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

हे भाष्य वापरताना, हायबरनेट प्रत्येक वर्गासाठी आणि त्याच्या उपवर्गासाठी डेटाबेसमध्ये वेगळ्या सारणीची अपेक्षा करेल. त्यांच्याकडून डेटा निवडताना, तुम्हाला SQL जॉइन ऑपरेटर वापरावा लागेल.

डेटाबेस स्कीमा उदाहरण:

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
}