அட்டவணை-நிலை உறவு
எங்கள் இரண்டு அட்டவணைகளை மீண்டும் பார்ப்போம்:
ஐடி | பெயர் | தொழில் | சம்பளம் | வயது | சேரும் நாள் |
---|---|---|---|---|---|
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 சிறுகுறிப்புகளுக்கு ஒரே மாதிரியாக இருக்கும் . ஆனால் இந்த அட்டவணைகளுக்கான ஜாவா வகுப்புகள் வேறுபட்டவை.