āĻŸā§‡āĻŦāĻŋāĻ˛-āĻ¸ā§āĻ¤āĻ°ā§‡āĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•

āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĻā§āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ†āĻŦāĻžāĻ° āĻ¤āĻžāĻ•āĻžāĻ¨:

āĻ†āĻ‡āĻĄāĻŋ āĻ¨āĻžāĻŽ āĻĒā§‡āĻļāĻž āĻŦā§‡āĻ¤āĻ¨ āĻŦāĻ¯āĻŧāĻ¸ āĻ¤āĻžāĻ°āĻŋāĻ– āĻ¯ā§‹āĻ— āĻĻāĻŋāĻ¤ā§‡
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

āĻ•āĻ°ā§āĻŽāĻšāĻžāĻ°ā§€ āĻŸā§‡āĻŦāĻŋāĻ˛:

āĻāĻ‡ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ•āĻ˛āĻžāĻŽ āĻ†āĻ›ā§‡:

  • āĻ†āĻ‡āĻĄāĻŋ āĻ†āĻ‡āĻāĻ¨āĻŸāĻŋ
  • āĻ¨āĻžāĻŽ VARCHAR
  • āĻĒā§‡āĻļāĻž āĻ­āĻžāĻ°ā§āĻšāĻž
  • āĻŦā§‡āĻ¤āĻ¨ INT
  • āĻŦāĻ¯āĻŧāĻ¸ INT
  • join_date DATE

āĻāĻŦāĻ‚ āĻāĻ‡āĻ­āĻžāĻŦā§‡ āĻŸāĻžāĻ¸ā§āĻ• āĻŸā§‡āĻŦāĻŋāĻ˛ , āĻ¯āĻž āĻ•āĻ°ā§āĻŽā§€āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻœ āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°ā§‡, āĻāĻ° āĻŽāĻ¤ā§‹ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ:

āĻ†āĻ‡āĻĄāĻŋ emploee_id āĻ¨āĻžāĻŽ āĻļā§‡āĻˇ āĻ¤āĻžāĻ°āĻŋāĻ–
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;
}

āĻ•āĻ°ā§āĻŽāĻšāĻžāĻ°ā§€_āĻ†āĻ‡āĻĄāĻŋ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻŸāĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻāĻ° āĻŽāĻžāĻ¨ āĻšāĻžāĻ‡āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ•āĻ°ā§āĻ¨

āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ•āĻŋāĻ›ā§ āĻ•āĻ°ā§āĻŽā§€āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻŋāĻ›ā§ āĻ•āĻžāĻœ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ‡āĻ°āĻ•āĻŽ āĻ•ā§‹āĻĄ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻŦā§‡:

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 āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ , āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ flush() āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§‡ āĻ•āĻ˛ āĻ•āĻ°āĻŋ āĻ¯āĻžāĻ¤ā§‡ INSERT āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻ¸āĻžā§āĻšāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸā§‡āĻ° āĻ†āĻ‡āĻĄāĻŋ āĻĨāĻžāĻ•ā§‡āĨ¤

āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ•āĻ•ā§‡ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ‡, āĻ¤āĻžāĻ° āĻ•āĻžāĻ› āĻĨā§‡āĻ•ā§‡ āĻŸāĻžāĻ¸ā§āĻ• āĻĢāĻŋāĻ˛ā§āĻĄāĻŸāĻŋ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻĻā§āĻŸāĻŋ āĻ•āĻžāĻœ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŋāĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ•āĻ•ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻŋāĨ¤ āĻāĻ° āĻĒāĻ°ā§‡, āĻŽāĻžāĻ¨ 4 āĻ¨āĻ¤ā§āĻ¨ āĻ•āĻžāĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡ āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻŦā§‡ āĻ•āĻ°ā§āĻŽāĻšāĻžāĻ°ā§€_āĻ†āĻ‡āĻĄāĻŋ āĻ•āĻ˛āĻžāĻŽ - āĻ•āĻ°ā§āĻŽāĻšāĻžāĻ°ā§€ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ•ā§‡āĻ° āĻ†āĻ‡āĻĄāĻŋāĨ¤

āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ ! āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻŸā§‡āĻŦāĻŋāĻ˛āĻ—ā§āĻ˛āĻŋ @ManyToOne āĻāĻŦāĻ‚ @OneToMany āĻŸā§€āĻ•āĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻ‡ āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ‡ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻœāĻžāĻ­āĻž āĻ•ā§āĻ˛āĻžāĻ¸ āĻ­āĻŋāĻ¨ā§āĻ¨āĨ¤