рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП JPA рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ (рдЖрд▓рд╕реА рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖)

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдЬрдм рдореИрдВрдиреЗ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдореЗрдВ рдЖрд▓рд╕реА рдЖрд░реЛрдкрдг рдХреЗ рдЦрд┐рд▓рд╛рдл рд▓рдбрд╝рд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЗрдмрд░ рдкрд░ рдПрдХ рдкреЛрд╕реНрдЯ рджреЗрдЦреА, рддреЛ рдореБрдЭреЗ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реБрдИ - рдореИрдВрдиреЗ рдЦреБрдж рдкреЛрд╕реНрдЯ рдкрдврд╝реА рдФрд░ рдЬрдм рддрдХ рдореБрдЭреЗ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдирд╣реАрдВ рдорд┐рд▓реАрдВ, рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдпрд╛ - рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╕реБрдЭрд╛рдПрдЧрд╛? рдореБрдЭреЗ рдРрд╕рд╛ рдХреБрдЫ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рдерд╛ред рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рд╡рд┐рдзрд┐ред



рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдЗрдХрд╛рдИ рд╣реИ:

@Entity public class Person { @Id private long id; private String firstName; private String lastName; @OneToMany private List<Person> children; // getters-setters }
      
      





рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдЗрд╕ рдЗрдХрд╛рдИ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдП, рддреЛ рдмрдЪреНрдЪреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд┐рд╕реА рднреА рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдЧреЗрдЯрд░реНрд╕ рдХреЛ рдирд╣реАрдВ рдЦреАрдВрдЪрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ:

 public interface IPerson { public long getId(); public void setId(long id); // getters-setters for firstName/lastName public List<IPerson> getChildren(); public void setChildren(List<IPerson> children); }
      
      





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

 Person examplePerson = getPersonFromDb(); IPerson personProxy = ProxyFactory.getProxy(IPerson.class, examplePerson);
      
      





рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? ProxyFactory.getProxy () рд╡рд┐рдзрд┐ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЙрдХреНрд╕реА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдЗрдкрд░реНрд╕рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рдЬрд┐рд╕рдореЗрдВ рдлрд╝реАрд▓реНрдб рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдореИрдк рдирд┐рд╣рд┐рдд рд╣реИ, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдирдХреНрд╢реЗ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП, ProxyFactory рдЗрдХрд╛рдИ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдгPPerson рдХрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдкрдврд╝рддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЬрдм рдХрд┐рд╕реА рднреА рдЧреЗрдЯреНрдЯрд░ / рд╕реЗрдЯрд░ рдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣реИрдВрдбрд▓рд░ рдЗрд╕ рдирдХреНрд╢реЗ рдореЗрдВ рд░реЗрдВрдЧрддрд╛ рд╣реИред



рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдПрдХ рдЗрдХрд╛рдИ рдореЗрдВ рдХрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкрд░рджреЗ рдХреЗ рдкреАрдЫреЗ рдЦреЗрддреЛрдВ рдХрд╛ рд╣реА рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╕реВрдЪреА рд╡рд╛рд▓реА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреА <IPerson>), рдЖрдк рдпрд╣ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реВрдЪреА рдореЗрдВ рдХреМрди-рдХреМрди рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реВрдЪреА <IPersonOnlyWithName>)ред



рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рдкреНрд░реЙрдХреНрд╕реА рдЗрдВрдЯрд░рдлреЗрд╕ (рдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрдХрд╛рдИ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ) рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╣рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдЪреАрдВрдЯреА-рдмрд┐рд▓реНрдбрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдПрдиреЛрдЯреЗрдЯ рдХреА рдЧрдИ рд╕рдВрд╕реНрдерд╛рдУрдВ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ:

 @Entity @ProxyBinding(interfaceClass = IPerson.class) public class Person { // тАж }
      
      





рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЗрд╕рдХреА рд╡реНрдпрд╡рд╣рд╛рд░реНрдпрддрд╛ рд╕рд╛рдмрд┐рдд рдХрд░ рджреА рд╣реИ рдФрд░ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рд╡рд░реНрдзрди рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рд╣реИрдВред рдХреБрдЫ рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред



All Articles