рдЯреЗрдмрд▓-рд▓реЗрд╡рд▓ рд░рд┐рд▓реЗрд╢рдирд╢рд┐рдк
рдЖрдЗрдП рд╣рдорд╛рд░реА рджреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦреЗрдВ:
рдкрд╣рдЪрд╛рди | рдирд╛рдо | рдкреЗрд╢рд╛ | рд╡реЗрддрди | рдЖрдпреБ | рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреА рддрд╛рд░реАрдЦ |
---|---|---|---|---|---|
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 |
рдХрд░реНрдордЪрд╛рд░реА рддрд╛рд▓рд┐рдХрд╛:
рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрддрдВрдн рд╣реИрдВ:
- рдЖрдИрдбреА рдЖрдИрдПрдирдЯреА
- рд╡рдЪрд░рд░ рдирд╛рдо
- рд╡реНрдпрд╡рд╕рд╛рдп рд╡рд░рдЪрд╛
- рд╡реЗрддрди рдЖрдИ.рдЯреА
- рдЖрдпреБ рдЖрдИ.рдЯреА
- 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 рд╕реНрддрдВрдн рд╣реИрдВ:
- рдЖрдИрдбреА рдХрд╛рд░реНрдп рдХреА рдЕрджреНрд╡рд┐рддреАрдп рд╕рдВрдЦреНрдпрд╛ рд╣реИ (рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпрд╛рдБ)ред
- рдХрд░реНрдордЪрд╛рд░реА_рдЖрдИрдбреА - рдХрд░реНрдордЪрд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдХрд░реНрдордЪрд╛рд░реА рдХреА рдЖрдИрдбреА рдЬрд┐рд╕реЗ рдХрд╛рд░реНрдп рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред
- рдирд╛рдо - рдХрд╛рд░реНрдп рдХрд╛ рдирд╛рдо рдФрд░ рд╡рд┐рд╡рд░рдгред
- рд╕рдордп рд╕реАрдорд╛ - рд╡рд╣ рд╕рдордп рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХрд░реНрдордЪрд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдПрдХрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдХрд╛рд░реНрдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХрдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯреЗрдмрд▓-рд▓реЗрд╡рд▓ рд░рд┐рд▓реЗрд╢рдирд╢рд┐рдк рдХреЛ рд╡рди-рдЯреВ -рдореИрдиреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рд╕реНрддрд░ рд╕реЗ рд╕рдВрдмрдВрдз
рдФрд░ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛рдПрдВ, рдХрд░реНрдордЪрд╛рд░реА рд╡рд░реНрдЧ :
@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;
}
рдФрд░ рдХрд░реНрдордЪрд╛рд░реА рдХрд╛рд░реНрдп рд╡рд░реНрдЧ рдЕрдкрдиреЗ рдореВрд▓ рд░реВрдк рдореЗрдВ:
@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 рдПрдиреЛрдЯреЗрд╢рди
рд╣рдо Entity Classes рдХреЗ рдмреАрдЪ Communication рдХреЛ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@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 рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП , рд╣рдордиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ objectрдХрд░реНрдордЪрд╛рд░реАрдХрдИ рдХрд░реНрдордЪрд╛рд░реА рдЯрд╛рд╕реНрдХ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, @JoinColumn рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП , рд╣рдордиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рдХрд╛рд░реНрдп рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдХрд┐рд╕ рдХреЙрд▓рдо рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдИрдбреА рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдХрд░реНрдордЪрд╛рд░реА.
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрд░реНрдордЪрд╛рд░реА рдХрд╛рд░реНрдп рд╡рд░реНрдЧ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрд░реНрдордЪрд╛рд░реА_рдЖрдИрдбреА рдХреЙрд▓рдо рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг:
@Entity
@Table(name="task")
class EmployeeTask {
@Column(name="id")
public Integer id;
@Column(name="name")
public String description;
@Column(name="deadline")
public Date deadline;
}
рдХрд░реНрдордЪрд╛рд░реА_рдЖрдИрдбреА рдлрд╝реАрд▓реНрдб рдХреЛ рд╕реЗрд╡рд╛ рдХреНрд╖реЗрддреНрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдорд╛рди рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ
рдЕрдЧрд░ рдЖрдк рдХрд┐рд╕реА рд╡рд░реНрдХрд░ рдХреЛ рдХреЛрдИ рдЯрд╛рд╕реНрдХ рдРрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:
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 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ , рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реЗрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлреНрд▓рд╢ () рдореЗрдердб рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ INSERT рдСрдкрд░реЗрд╢рди рд╣реЛ рд╕рдХреЗ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ ID рд╣реЛред
рдлрд┐рд░ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд┐рджреЗрд╢рдХ рдХреЛ рдвреВрдВрдврддреЗ рд╣реИрдВ, рдЙрд╕рд╕реЗ рдХрд╛рд░реНрдп рдХреНрд╖реЗрддреНрд░ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдореЗрдВ рджреЛ рдХрд╛рд░реНрдп рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдирд┐рджреЗрд╢рдХ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рдХрд░реНрдордЪрд╛рд░реА_рдЖрдИрдбреА рдХреЙрд▓рдо рдореЗрдВ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдорд╛рди 4 рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ - рдХрд░реНрдордЪрд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдирд┐рджреЗрд╢рдХ рдХреА рдЖрдИрдбреАред
рдорд╣рддреНрд╡рдкреВрд░реНрдг! рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЯреЗрдмрд▓ @ManyToOne рдФрд░ @OneToMany рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИрдВ ред рд▓реЗрдХрд┐рди рдЗрди рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ рдЕрд▓рдЧ рд╣реИрдВред