рдЯреЗрдмрд▓-рд╕реНрддрд░реАрдп рд╕рдВрдмрдВрдз
рдЪрд▓рд╛ рдЖрдордЪреНрдпрд╛ рджреЛрди рдЯреЗрдмрд▓реНрд╕ рдкреБрдиреНрд╣рд╛ рдкрд╛рд╣реВ:
рдЖрдпрдбреА | рдирд╛рд╡ | рд╡реНрдпрд╡рд╕рд╛рдп | рдкрдЧрд╛рд░ | рд╡рдп | рд░реБрдЬреВ рджрд┐рдирд╛рдВрдХ |
---|---|---|---|---|---|
рез | рдЗрд╡реНрд╣рд╛рдиреЛрд╡реНрд╣ рдЗрд╡реНрд╣рд╛рди | рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ | 100000 | реирел | 2012-06-30 |
2 | рдкреЗрдЯреНрд░реЛрд╡реНрд╣ рдкреЗрддреНрд░ | рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ | 80000 | 23 | 2013-08-12 |
3 | рдЗрд╡реНрд╣рд╛рдиреЛрд╡реНрд╣ рд╕реЗрд░реНрдЧреЗ | рдкрд░реАрдХреНрд╖рдХ | 40000 | рддреАрд╕ | 2014-01-01 |
4 | рд░рд╛рдмрд┐рдиреЛрд╡рд┐рдЪ рдореЛрдЗрд╢рд╛ | рджрд┐рдЧреНрджрд░реНрд╢рдХ | 200000 | 35 | 2015-05-12 |
рел | рдХрд┐рд░рд┐рдПрдиреНрдХреЛ рдЕрдирд╛рд╕реНрддрд╛рд╕рд┐рдпрд╛ | рдХрд╛рд░реНрдпрд╛рд▓рдп рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ | 40000 | реирел | 2015-10-10 |
6 | рд╡рд╛рд╕реНрдХрд╛ | рдорд╛рдВрдЬрд░ | 1000 | 3 | 2018-11-11 |
рдХрд░реНрдордЪрд╛рд░реА рдЯреЗрдмрд▓:
рдпрд╛ рд╕рд╛рд░рдгреАрдордзреНрдпреЗ рдЦрд╛рд▓реАрд▓ рд╕реНрддрдВрдн рдЖрд╣реЗрдд:
- рдЖрдпрдбреА INT
- VARCHAR рдирд╛рд╡
- рд╡реНрдпрд╡рд╕рд╛рдп рд╡рд░рдЪрд╛
- рдкрдЧрд╛рд░ INT
- рд╡рдп INT
- join_date DATE
рдЖрдгрд┐ рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рдХрд╛рд░реНрдп рд╕рд╛рд░рдгреА , рдЬреНрдпрд╛рдордзреНрдпреЗ рдХрд░реНрдордЪрд╛рд░реНтАНрдпрд╛рдВрд╕рд╛рдареА рдХрд╛рд░реНрдпреЗ рдЖрд╣реЗрдд, рдЕрд╕реЗ рджрд┐рд╕рддреЗ:
рдЖрдпрдбреА | рдХрд░реНрдордЪрд╛рд░реА_рдЖрдпрдбреА | рдирд╛рд╡ | рдЕрдВрддрд┐рдо рдореБрджрдд |
---|---|---|---|
рез | рез | рдлреНрд░рдВрдЯрдПрдВрдбрд╡рд░реАрд▓ рдмрдЧрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рд╛ | 2022-06-01 |
2 | 2 | рдмреЕрдХрдПрдВрдбрд╡рд░реАрд▓ рдмрдЧрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рд╛ | 2022-06-15 |
3 | рел | рдХреЙрдлреА рд╡рд┐рдХрдд рдШреНрдпрд╛ | 2022-07-01 |
4 | рел | рдХреЙрдлреА рд╡рд┐рдХрдд рдШреНрдпрд╛ | 2022-08-01 |
рел | рел | рдХреЙрдлреА рд╡рд┐рдХрдд рдШреНрдпрд╛ | 2022-09-01 |
6 | (рдирд┐рд░рд░реНрдердХ) | рдСрдлрд┐рд╕рдЪреА рд╕рд╛рдлрд╕рдлрд╛рдИ рдХрд░рд╛ | (рдирд┐рд░рд░реНрдердХ) |
рен | 4 | рдЬреАрд╡рдирд╛рдЪрд╛ рдЖрдирдВрдж рдШреЗ | (рдирд┐рд░рд░реНрдердХ) |
8 | 6 | рдЬреАрд╡рдирд╛рдЪрд╛ рдЖрдирдВрдж рдШреЗ | (рдирд┐рд░рд░реНрдердХ) |
рдпрд╛ рд╕рд╛рд░рдгреАрдордзреНрдпреЗ рдлрдХреНрдд 4 рд╕реНрддрдВрдн рдЖрд╣реЗрдд:
- 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;
}
рдХрд░реНрдордЪрд╛рд░реА_рдЖрдпрдбреА рдлреАрд▓реНрдб рд╣реЗ рд╕реЗрд╡рд╛ рдХреНрд╖реЗрддреНрд░ рдорд╛рдирд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рдореВрд▓реНрдп рд╣рд╛рдпрдмрд░рдиреЗрдЯрджреНрд╡рд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ.
рдЙрджрд╛рд╣рд░рдгрд╛рдВрдЪреА рд╡рд┐рдирдВрддреА рдХрд░рд╛
рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рд╣реА рдХрд╛рд░реНрдпрдХрд░реНрддреНрдпрд╛рд▓рд╛ рдХрд╛рд╣реА рдХрд╛рд░реНрдп рдЬреЛрдбрд╛рдпрдЪреЗ рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рдХреЛрдб рд▓рд┐рд╣рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓:
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 рднрд╛рд╖реНрдпрд╛рдВрд╕рд╛рдареА рд╕рдорд╛рди рдЖрд╣реЗрдд . рдкрдг рдпрд╛ рдЯреЗрдмрд▓реНрд╕рдЪреЗ Java рд╡рд░реНрдЧ рд╡реЗрдЧрд│реЗ рдЖрд╣реЗрдд.