CodeGym/Java Course/All lectures for HI purposes/рд▓реЛрдб рдХрд░рддреЗ рд╣реБрдП рдЖрд▓рд╕ рдЖрдирд╛

рд▓реЛрдб рдХрд░рддреЗ рд╣реБрдП рдЖрд▓рд╕ рдЖрдирд╛

рдЙрдкрд▓рдмреНрдз

1.1 рд╕рдорд╕реНрдпрд╛ рдХреА рдкреГрд╖реНрдарднреВрдорд┐

рдЬрдм рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рддреБрд░рдВрдд "рд╕рдордпрдкреВрд░реНрд╡ рдЕрдиреБрдХреВрд▓рди рд╕рднреА рдмреБрд░рд╛рдИ рдХреА рдЬрдбрд╝ рд╣реИ" рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдпрд╛рдж рд╣реЛрдЧрд╛ред рдХреЗрд╡рд▓ рдЕрдм рдЖрдк рдЙрд╕реЗ рдирдХрд╛рд░рд╛рддреНрдордХ рддрд░реАрдХреЗ рд╕реЗ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдЕрдиреБрдХреВрд▓рди рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИред рдФрд░ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбрд┐рдЬрд╛рдЗрди рдЪрд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИред рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рд╕реА рднреА рдмрдЪреНрдЪреЗ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдареАрдХ рд╕реЗ рдПрдиреЛрдЯреЗрдЯ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ @OneToManyрд╣реИрдВ @ManyToManyред рдЙрджрд╛рд╣рд░рдг:

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

   @OneToMany(cascade = CascadeType.ALL)
   @JoinColumn(name = "user_id")
   public List<Comment> comments;
}

рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ:

User user = session.get(User.class, 1);
List<Comment> comments = user.getComments();

рдФрд░ рдЖрдк рдПрдХ рдмрдбрд╝реЗ рдЖрд╢реНрдЪрд░реНрдп рдореЗрдВ рдкрдбрд╝ рдЬрд╛рдПрдВрдЧреЗред рдпреВрдЬрд░ рдХреЗ рдкрд╛рд╕ рдХрдИ рд╣рдЬрд╛рд░ рдХрдореЗрдВрдЯреНрд╕ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реЛрдЧрд╛, рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рд╡рдЧреИрд░рд╣ рд▓реЗ рд▓реЗрдВрдЧреАред

рдЗрд╕рд▓рд┐рдП рдЖрдк рдРрд╕рд╛ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ! рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдирд╣реАрдВред

1.2 рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рдЪреАрдЬреЛрдВ рдХреЛ рдФрд░ рдЦрд░рд╛рдм рдХрд░рдирд╛

рд╕рдорд╕реНрдпрд╛ рддреЛ рдФрд░ рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдЖрдорддреМрд░ рдкрд░ рдЖрдкрдХреЛ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рднрд▓реЗ рд╣реА рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХрд╣реАрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдЗрд╕реЗ рднрд╛рдЧреЛрдВ - рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред

рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рдЬрд░реВрд░рдд рд╣реИ:

public class CommentsManager {
    private static final PAGE_SIZE = 50;

    public List<Comment> getCommentsPage(int userId, int pageIndex){
     	User user = session.get(User.class, userId);
     	List<Comment> comments = user.getComments();
     	return comments.subList(pageIndex * PAGE_SIZE, PAGE_SIZE);
    }

   public int getCommentsPageCount(int userId)   {
     	User user = session.get(User.class, userId);
     	List<Comment> comments = user.getComments();
     	return Math.ceil(  comments.size()/PAGE_SIZE);
   }

}

рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдкреГрд╖реНрда рд▓реМрдЯрд╛рддреА рд╣реИ - 50 рдЯреБрдХрдбрд╝реЗред рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддреА рд╣реИред рдФрд░ рдпрд╣ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╣реИред рдХреЗрд╡рд▓ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛!

1.3 рд╕реБрд░рдВрдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреНрд░рдХрд╛рд╢

рдЗрд╕рд▓рд┐рдП, рдХреЛрдИ рднреА рд╣рдорд╛рд░реЗ рдЕрджреНрднреБрдд рдмрд╛рд▓ рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдирд╣реАрдВ, рдмреЗрд╢рдХ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдЪрдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣:

public class CommentsManager {
      private static final PAGE_SIZE = 50;

       public List<Comment> getCommentsPage(int userId, int pageIndex){
           	String hql = "select comments from User where id = :id";
           	Query<Comment> query = session.createQuery( hql, Comment.class);
           	query.setParametr("id", userId);
           	query.setOffset(pageIndex * PAGE_SIZE);
           	query.setLimit(PAGE_SIZE);
           	return query.list();
      }

      public int getCommentsPageCount(int userId)   {
           	String hql = "select count(comments) from User where id = :id";
           	Query<Integer> query = session.createQuery( hql, Integer.class);
           	query.setParametr("id", userId);
           	return Math.ceil(query.singleResult()/PAGE_SIZE);
     }

}

рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдмреБрд░реА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ
  • рд▓реЛрдХрдкреНрд░рд┐рдп
  • рдирдпрд╛
  • рдкреБрд░рд╛рдирд╛
рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рд╛рдЗрди рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдЗрд╕ рдкреЗрдЬ рдкрд░ рдЕрднреА рддрдХ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ