CodeGym/Java Course/All lectures for BN purposes/@āĻāĻ•ā§‡āĻ° āĻĒāĻ° āĻāĻ•

@āĻāĻ•ā§‡āĻ° āĻĒāĻ° āĻāĻ•

āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨

5.1 āĻāĻ• āĻĨā§‡āĻ•ā§‡ āĻāĻ• āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ—ā§‡āĻ° āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĢāĻ°ā§āĻŽ

āĻĻā§āĻŸāĻŋ āĻ¸āĻ¤ā§āĻ¤āĻž āĻļā§āĻ°ā§‡āĻŖā§€āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡āĻ° āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻŦāĻ°āĻ‚ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ - āĻāĻ•āĻŸāĻŋ āĻāĻ•-āĻāĻ• āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĨ¤

āĻ†āĻŽāĻŋ āĻāĻ‡ āĻ•ā§‡āĻ¸āĻŸāĻŋāĻ•ā§‡ āĻ–ā§āĻŦ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻŦāĻ˛āĻŋ, āĻ•āĻžāĻ°āĻŖ āĻāĻŸāĻŋ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻœāĻžāĻ­āĻž āĻ…āĻŦāĻœā§‡āĻ•ā§āĻŸ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦā§‡āĻļāĻŋāĨ¤ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡, āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĻā§āĻŸāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:

  • āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻ…āĻ¨ā§āĻ¯ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ†āĻ‡āĻĄāĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ˛āĻŋāĻ™ā§āĻ• āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤
  • āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻŸā§‡āĻŦāĻŋāĻ˛āĻŸāĻŋ āĻŦāĻšā§-āĻĨā§‡āĻ•ā§‡-āĻ…āĻ¨ā§‡āĻ• āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻāĻ¨ā§āĻŸāĻŋāĻŸāĻŋ āĻ•ā§āĻ˛āĻžāĻ¸ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻāĻŽāĻ¨ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻĨāĻžāĻ•āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¯āĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻŸā§€āĻ•āĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡:

  • @āĻāĻŽā§āĻŦā§‡āĻĄā§‡āĻĄ
  • āĻāĻ•āĻ¤āĻ°āĻĢāĻž OneToOne
  • āĻĻā§āĻŦāĻŋāĻĒāĻžāĻ•ā§āĻˇāĻŋāĻ• OneToOne
  • @MapsId

āĻ¨ā§€āĻšā§‡ āĻ†āĻŽāĻ°āĻž āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻœāĻ¨āĻĒā§āĻ°āĻŋāĻ¯āĻŧ āĻŦāĻŋāĻŦā§‡āĻšāĻ¨āĻž āĻ•āĻ°āĻŦāĨ¤

5.2 āĻāĻŽāĻŦā§‡āĻĄā§‡āĻĄ

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

āĻ§āĻ°āĻž āĻ¯āĻžāĻ• āĻ†āĻŽāĻ°āĻž UserAddress āĻ•ā§āĻ˛āĻžāĻ¸ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ āĻŋāĻ•āĻžāĻ¨āĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡ :

@Embeddable
class UserAddress {
   @Column(name="user_address_country")
   public String country;
   @Column(name="user_address_city")
   public String city;
   @Column(name="user_address_street")
   public String street;
   @Column(name="user_address_home")
   public String home;
}

āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ‡ āĻ āĻŋāĻ•āĻžāĻ¨āĻžāĻŸāĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ User āĻ•ā§āĻ˛āĻžāĻ¸ā§‡ :

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

   @Embedded
   public UserAddress address;

   @Column(name="created_date")
   public Date createdDate;
}

āĻšāĻžāĻ‡āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸ āĻŦāĻžāĻ•āĻŋ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡: āĻĄā§‡āĻŸāĻž āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻŦā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ HQL āĻĒā§āĻ°āĻļā§āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ•ā§āĻ˛āĻžāĻ¸ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤

HQL āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

select from User where address.city = 'Paris'

5.3 āĻāĻ•āĻ¤āĻ°āĻĢāĻž OneToOne

āĻāĻ–āĻ¨ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°ā§āĻ¨: āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻ‰āĻ¤ā§āĻ¸ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ•āĻ°ā§āĻŽāĻšāĻžāĻ°ā§€ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻŸāĻžāĻ¸ā§āĻ• āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻ•āĻ°ā§āĻŽāĻšāĻžāĻ°ā§€āĻ•ā§‡ āĻŦā§‹āĻāĻžāĻ¯āĻŧāĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻ°āĻž āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤āĻ­āĻžāĻŦā§‡ āĻœāĻžāĻ¨āĻŋ āĻ¯ā§‡ āĻāĻ•āĻœāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ• āĻāĻ•āĻŸāĻŋ āĻŸāĻžāĻ¸ā§āĻ• āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻŸā§€āĻ•āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ @OneToOneāĨ¤

āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ:

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

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

   @OneToOne
   @JoinColumn(name = "employee_id")
   public Employee employee;

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

āĻšāĻžāĻ‡āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻŦā§‡ āĻ¯ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻŸāĻžāĻ¸ā§āĻ•ā§‡ āĻāĻ•āĻœāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ āĻ¨ā§‡āĻ‡, āĻ¤āĻŦā§‡ āĻāĻ•āĻœāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻŸāĻžāĻ¸ā§āĻ• āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻ…āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ, āĻāĻ‡ āĻ•ā§‡āĻ¸āĻŸāĻŋ āĻ•āĻžāĻ°ā§āĻ¯āĻ¤ āĻāĻ° āĻĨā§‡āĻ•ā§‡ āĻ†āĻ˛āĻžāĻĻāĻž āĻ¨āĻ¯āĻŧ @ManyToOneāĨ¤

5.4 āĻĻā§āĻŦāĻŋāĻĒāĻžāĻ•ā§āĻˇāĻŋāĻ• OneToOne

āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻāĻ•āĻŸā§ āĻ…āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ• āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ•āĻžāĻ°āĻŖ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻļāĻ‡ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻœāĻ¨ āĻ•āĻ°ā§āĻŽāĻšāĻžāĻ°ā§€āĻ•ā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯āĻ‡ āĻ…āĻ°ā§āĻĒāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻāĻ•āĻœāĻ¨ āĻ•āĻ°ā§āĻŽāĻšāĻžāĻ°ā§€āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ•āĻžāĻœāĻ“ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨āĨ¤

āĻāĻŸāĻŋ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻŋ EmployeeTask āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻŸāĻŋ Employee āĻ•ā§āĻ˛āĻžāĻ¸ā§‡ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻāĻŸāĻŋāĻ•ā§‡ āĻ¸āĻ āĻŋāĻ• āĻŸā§€āĻ•āĻž āĻĻāĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤

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

   @OneToOne(cascade = CascadeType.ALL, mappedBy="employee")
   private EmployeeTask task;
}

āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ !āĻ•āĻ°ā§āĻŽāĻšāĻžāĻ°ā§€ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻŸāĻžāĻ¸ā§āĻ•_āĻ†āĻ‡āĻĄāĻŋ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻ¨ā§‡āĻ‡ , āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻŸāĻžāĻ¸ā§āĻ• āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ•āĻ°ā§āĻŽāĻšāĻžāĻ°ā§€_āĻ†āĻ‡āĻĄāĻŋ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ• āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ āĨ¤

āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ‡ āĻŽāĻ¤ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ:

Employee director = session.find(Employee.class, 4);
EmployeeTask task = session.find(EmployeeTask.class, 101);
task.employee = director;
director.task = task;

session.update(task);
session.flush();

āĻ˛āĻŋāĻ™ā§āĻ•āĻŸāĻŋ āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡, āĻ‰āĻ­āĻ¯āĻŧ āĻŦāĻ¸ā§āĻ¤ā§ āĻĨā§‡āĻ•ā§‡ āĻ˛āĻŋāĻ™ā§āĻ•āĻ—ā§āĻ˛āĻŋāĻ“ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻ¤ā§‡ āĻšāĻŦā§‡:

Employee director = session.find(Employee.class, 4);
EmployeeTask task = director.task;

task.employee = null;
session.update(task);

director.task = null;
session.update(director);

session.flush();
āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯
  • āĻœāĻ¨āĻĒā§āĻ°āĻŋā§Ÿ
  • āĻ¨āĻ¤ā§āĻ¨
  • āĻĒā§āĻ°āĻžāĻ¨ā§‹
āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ˛ā§‡āĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¤ā§‹āĻŽāĻžāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ¸āĻžāĻ‡āĻ¨ āĻ‡āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡
āĻāĻ‡ āĻĒāĻžāĻ¤āĻžā§Ÿ āĻāĻ–āĻ¨āĻ“ āĻ•ā§‹āĻ¨ā§‹ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ¨ā§‡āĻ‡