அட்டவணை-நிலை உறவு

எங்கள் இரண்டு அட்டவணைகளை மீண்டும் பார்ப்போம்:

ஐடி பெயர் தொழில் சம்பளம் வயது சேரும் நாள்
1 இவனோவ் இவான் புரோகிராமர் 100000 25 2012-06-30
2 பெட்ரோவ் பெட்ர் புரோகிராமர் 80000 23 2013-08-12
3 இவனோவ் செர்ஜி சோதனையாளர் 40000 முப்பது 2014-01-01
4 ரபினோவிச் மொய்ஷா இயக்குனர் 200000 35 2015-05-12
5 கிரியென்கோ அனஸ்தேசியா அலுவலக மேலாளர் 40000 25 2015-10-10
6 வாஸ்கா பூனை 1000 3 2018-11-11

பணியாளர் அட்டவணை:

இந்த அட்டவணையில் பின்வரும் நெடுவரிசைகள் உள்ளன:

  • ஐடி INT
  • பெயர் VARCHAR
  • தொழில் வர்ச்சா
  • சம்பளம் INT
  • வயது INT
  • join_date DATE

ஊழியர்களுக்கான பணிகளைக் கொண்ட பணி அட்டவணை இப்படித்தான் இருக்கும் :

ஐடி பணியாளர்_ஐடி பெயர் காலக்கெடுவை
1 1 முகப்பில் ஒரு பிழையை சரிசெய்யவும் 2022-06-01
2 2 பின்தளத்தில் ஒரு பிழையை சரிசெய்யவும் 2022-06-15
3 5 காபி வாங்கு 2022-07-01
4 5 காபி வாங்கு 2022-08-01
5 5 காபி வாங்கு 2022-09-01
6 (ஏதுமில்லை) அலுவலகத்தை சுத்தம் செய்யுங்கள் (ஏதுமில்லை)
7 4 வாழ்க்கையை அனுபவிக்கவும் (ஏதுமில்லை)
8 6 வாழ்க்கையை அனுபவிக்கவும் (ஏதுமில்லை)

இந்த அட்டவணையில் 4 நெடுவரிசைகள் மட்டுமே உள்ளன:

  • id என்பது பணியின் தனிப்பட்ட எண் (மற்றும் அட்டவணையில் உள்ள வரிசைகள்).
  • Employee_id - பணி ஒதுக்கப்பட்ட பணியாளர் அட்டவணையில் இருந்து பணியாளரின் ஐடி.
  • பெயர் - பணியின் பெயர் மற்றும் விளக்கம்.
  • காலக்கெடு - பணியை முடிக்க வேண்டிய நேரம்.

பணியாளர் அட்டவணையில் உள்ள ஒரு பதிவை பணி அட்டவணையில் பல வரிசைகள் மூலம் குறிப்பிடலாம். அத்தகைய அட்டவணை-நிலை உறவு ஒன்று முதல் பல என்று அழைக்கப்படுகிறது.

ஜாவா வகுப்பு நிலைக்கு உறவு

எங்கள் வகுப்புகள், பணியாளர் வகுப்பு :

@Entity
@Table(name="user")
class Employee {
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="occupation")
   public String occupation;

   @Column(name="salary")
   public Integer salary;

   @Column(name="join_date")
   public Date join;
}

மற்றும் EmployeeTask வகுப்பு அதன் அசல் வடிவத்தில்:

@Entity
@Table(name="task")
class EmployeeTask {
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String description;

   @Column(name="employee_id")
   public Integer employeeId;

   @Column(name="deadline")
   public Date deadline;
}

@OneToMany சிறுகுறிப்பு

நிறுவன வகுப்புகளுக்கு இடையேயான தொடர்பை நாம் வேறு வழியில் ஏற்பாடு செய்யலாம்.

பெற்றோர் வகுப்பில் குழந்தைப் பொருள்களின் தொகுப்பை உருவாக்கப் பயன்படுத்திய @ElementCollection சிறுகுறிப்பு நினைவிருக்கிறதா ? @OneToMany சிறுகுறிப்பு மூலம் இதேபோன்ற ஒன்றைச் செய்யலாம் . இந்த நேரத்தில் மட்டும், பணியாளர் வகுப்பு மாற்றப்படும் :

@Entity
@Table(name="user")
class Employee {
   @Column(name="id")
   public Integer id;

   @OneToMany(cascade = CascadeType.ALL)
   @JoinColumn(name = "employee_id")
   private Set<EmployeeTask> tasks = new HashSet<EmployeeTask>();
}

@OneToMany சிறுகுறிப்பைப் பயன்படுத்தி , பொருளைக் குறிப்பிட்டோம்பணியாளர்பல EmployeeTask பொருட்களை சேமிக்க முடியும் . மேலும், @JoinColumn சிறுகுறிப்பைப் பயன்படுத்தி , பணி அட்டவணையின் எந்த நெடுவரிசையில் பொருள் ஐடி சேமிக்கப்படுகிறது என்பதைக் குறிப்பிட்டோம்பணியாளர்.

இருப்பினும், EmployeeTask வகுப்பில் பொதுவாகப் பணியாளர்_ஐடி நெடுவரிசையைக் குறிக்கும் புலம் இருக்காது. உதாரணமாக:

@Entity
@Table(name="task")
class EmployeeTask {
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String description;

   @Column(name="deadline")
   public Date deadline;
}

Employee_id புலம் ஒரு சேவைப் புலமாகக் கருதப்படுகிறது மற்றும் அதன் மதிப்பு Hibernate ஆல் கட்டுப்படுத்தப்படுகிறது.

உதாரணங்களைக் கோருங்கள்

சில பணியாளருக்கு சில பணியைச் சேர்க்க விரும்பினால், நீங்கள் இது போன்ற குறியீட்டை எழுத வேண்டும்:

EmployeeTask task1 = new EmployeeTask();
task1.description = "Do Something Important";
session.persist(task1);

EmployeeTask task2 = new EmployeeTask();
task2.description = "Nothing to do";
session.persist(task2);
session.flush();

Employee director = session.find(Employee.class, 4);
director.tasks.add(task1);
director.tasks.add(task2);

session.update(director);
session.flush();

முதலில், நாங்கள் இரண்டு EmployeeTask ஆப்ஜெக்ட்களை உருவாக்கி , அவற்றை தரவுத்தளத்தில் சேமித்து, ஃப்ளஷ்() முறையை அழைக்கிறோம் .

பின்னர் தரவுத்தளத்தில் இயக்குனரைக் கண்டுபிடித்து, அவரிடமிருந்து பணிகள் புலத்தை எடுத்து அவரிடம் இரண்டு பணிகளைச் சேர்க்கிறோம். பின்னர் இயக்குனரை தரவுத்தளத்தில் சேமிக்கிறோம். அதன் பிறகு, பணியாளர்_ஐடி நெடுவரிசையில் புதிய பணிகளுக்கான தரவுத்தளத்தில் மதிப்பு 4 தோன்றும் - பணியாளர் அட்டவணையில் இயக்குனரின் ஐடி.

முக்கியமான! தரவுத்தளத்தில் உள்ள அட்டவணைகள் @ManyToOne மற்றும் @OneToMany சிறுகுறிப்புகளுக்கு ஒரே மாதிரியாக இருக்கும் . ஆனால் இந்த அட்டவணைகளுக்கான ஜாவா வகுப்புகள் வேறுபட்டவை.