CodeGym/Java Blog/рдЕрдирд┐рдпрдорд┐рдд/рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ
John Squirrels
рд╕реНрддрд░ 41
San Francisco

рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ

рдЕрдирд┐рдпрдорд┐рдд рдЧреНрд░реБрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд
рд╕рджрд╕реНрдп
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдЖрдк рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЙрджреНрдпрдо рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдВрдЧреЗ рдФрд░ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗред рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрднреА рдирд╣реАрдВ рд╕реБрдирд╛? рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реЛ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реЛ? рдпрд╛ рд╢рд╛рдпрдж рдЖрдкрдиреЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЕрд╕рдлрд▓ рд░рд╣реЗ? рддреАрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ - рдХрдЯ рдХреЗ рдиреАрдЪреЗ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ :) рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди - 1 рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдорд┐рдиреА-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реВрдБрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП:
  1. IntelliJ IDEA рдЕрд▓реНрдЯреАрдореЗрдЯ рдПрдбрд┐рд╢рди
    рдЗрд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ 30-рджрд┐рд╡рд╕реАрдп рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВред
  2. PostgreSQL - рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЖрдзреБрдирд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ (DBMS) рдореЗрдВ рд╕реЗ рдПрдХ
  3. рдореЗрд╡реЗрди (рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдИрдбреАрдИрдП рддрдХ рд╡рд╛рдпрд░реНрдб)
  4. рдереЛрдбрд╝рд╛ рдзреАрд░рдЬред
рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ GitHub (codegym рд╢рд╛рдЦрд╛) рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ ред рд▓реЗрдЦ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖рд┐рдд рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рдХрднреА рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХрдо рдХрд░ рджреА рд╣реИред рдЖрдПрдБ рд╢реБрд░реВ рдХрд░реЗрдВ!

рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХреНрдпрд╛ рд╣реИ?

рдпрд╣ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧ (ORM) рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдПрдХ CRUD (рдХреНрд░рд┐рдПрдЯ, рд░реАрдб, рдЕрдкрдбреЗрдЯ, рдбрд┐рд▓реАрдЯ) рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рд╣реИ рдЬреЛ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛:
  1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛) рдмрдирд╛рдПрдБ, рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬреЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЙрдирдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╣рдЯрд╛ рджреЗрдВред
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХрд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ (рдСрдЯреЛ) рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрд╛рд░ рдмрдирд╛рдПрдВ, рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдвреВрдВрдвреЗрдВ рдФрд░ рд╣рдЯрд╛рдПрдВред
  3. рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ "рдорд╛рд▓рд┐рдХрд╣реАрди" рдХрд╛рд░реЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЬрдм рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕рднреА рдХрд╛рд░реЛрдВ рдХреЛ рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЗрд╕ рддрд░рд╣ рд╕рдВрд░рдЪрд┐рдд рд╣реЛрдЧреА: рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдРрдкреНрд▓рд┐рдХреЗрд╢рди - 2рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде 6 рдХрдХреНрд╖рд╛рдПрдВ + 1 рдлрд╝рд╛рдЗрд▓ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, IntelliJ IDEA рдореЗрдВ рдПрдХ рдирдпрд╛ рдорд╛рд╡реЗрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдлрд╝рд╛рдЗрд▓ -> рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ред рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдорд╛рд╡реЗрди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЬрд╛рдПрдБред рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди - 3рдЕрдкрд╛рдЪреЗ рдорд╛рд╡реЗрди рдкреАрдУрдПрдо рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЙрдирдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рд╣реИред рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдкреВрд░реА рд╕рдВрд░рдЪрдирд╛ pom.xml рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреА рдЬрд╛рдПрдЧреА, рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЬрд┐рд╕реЗ IDEA рд╕реНрд╡рдпрдВ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдореЗрдВ рдмрдирд╛рдПрдЧреАред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рд╡реЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: GroupId рдФрд░ рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдпред рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, GroupId рдЖрдорддреМрд░ рдкрд░ рдХрдВрдкрдиреА рдпрд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЗрдХрд╛рдИ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╣реЛрддрд╛ рд╣реИред рдХрдВрдкрдиреА рдпрд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рдбреЛрдореЗрди рдирд╛рдо рдпрд╣рд╛рдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрджрд▓реЗ рдореЗрдВ, artifactId рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд╛рдо рд╣реИред GroupdId рдХреЗ рд▓рд┐рдП, рдЖрдк рджрд░реНрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ com.yourNickname.codegymред рдЗрд╕рд╕реЗ рдЖрд╡реЗрджрди рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝реЗрдЧрд╛ред artifactId рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреА рдкрд╕рдВрдж рдХрд╛ рдХреЛрдИ рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╛рдо рдЪреБрдиреЗрдВред рд╕рдВрд╕реНрдХрд░рдг рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдРрдкреНрд▓рд┐рдХреЗрд╢рди - 4рдЕрдВрддрд┐рдо рд╕реНрдХреНрд░реАрди рдкрд░, рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВредрдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдРрдкреНрд▓рд┐рдХреЗрд╢рди - 5рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ред рдЕрдм рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИ рдХрд┐ рдХреБрдЫ рдХреЛрдб рд▓рд┐рдЦреЗрдВ рдФрд░ рдЗрд╕реЗ рдХрд╛рдо рдореЗрдВ рд▓рд╛рдПрдВ :) рд╕рдмрд╕реЗ рдкрд╣рд▓реА рдмрд╛рдд: рдЕрдЧрд░ рд╣рдо рдПрдХ рдРрд╕рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рдпрд╣рд╛рдВ рд╕реЗ PostgreSQL рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ (рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 9 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)ред PostgreSQL рдХреЗ рдкрд╛рд╕ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ 'рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ' рд╣реИ - рдЬрдм рдЖрдк рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ред рдкрд╛рд╕рд╡рд░реНрдб рди рднреВрд▓реЗрдВред рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдмрд╛рдж рдореЗрдВ рдкрдбрд╝реЗрдЧреА! (рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреБрд░рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдХрд░ рдЕрд▓реНрд╕рд░ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗ)ред рдпрджрд┐ рдЖрдк рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдФрд░ рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдорд┐рддреНрд░ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИред IntelliJ IDEA рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рдЙрдкрдпреБрдХреНрдд рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдРрдкреНрд▓рд┐рдХреЗрд╢рди - 6(рдЖрдИрдбреАрдИрдП рдХреЗ рджрд╛рдПрдБ рдлрд▓рдХ, рдбреЗрдЯрд╛рдмреЗрд╕ рдЯреИрдм рдкрд░ рд╕реНрдерд┐рдд)ред рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, "+" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд (PostgeSQL) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ ("рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ") рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рднрд░реЗрдВ рдФрд░ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░реЗрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝ рдбреНрд░рд╛рдЗрд╡рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдЖрдк рдЗрд╕реЗ рдЙрд╕реА рдкреЗрдЬ рдкрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдЯреЗрд╕реНрдЯ рдХрдиреЗрдХреНрд╢рди" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк "рд╕рдлрд▓" рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдЧреЗ рдмрдврд╝реЗрдВред рдЕрдм рд╣рдо рд╡реЗ рддрд╛рд▓рд┐рдХрд╛рдПрдБ рдмрдирд╛рдПрдВрдЧреЗ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреБрд▓ рджреЛ рд╣реЛрдВрдЧреЗ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдСрдЯреЛред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░: рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдРрдкреНрд▓рд┐рдХреЗрд╢рди - 7рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдИрдбреА рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рд╣реИред рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ SQL рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреНрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ Google рдХрд░реЗрдВред рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдСрдЯреЛ рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕: рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдРрдкреНрд▓рд┐рдХреЗрд╢рди - 8рдСрдЯреЛ рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рдпрд╣ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд╣рд░реА рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рдХрд╛рд░ рдЖрдИрдбреА = 1 рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╣реИ, рддреЛ рдСрдЯреЛ рдХрд╛ user_id рдлрд╝реАрд▓реНрдб 1 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрдирдХреА рдХрд╛рд░реЛрдВ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реА рдСрдЯреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, user_id рдлрд╝реАрд▓реНрдб рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░реЗрдЧреАред рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЖрдИрдбреА рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдЧрд╛ред рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдРрдкреНрд▓рд┐рдХреЗрд╢рди - 9рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рджреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╡рд╛рд▓рд╛ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдпрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрдирд╛ рдмрд╛рдХреА рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЬрд╛рд╡рд╛ рдХреЛрдб рд╕реЗ рдХреИрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╣рдо pom.xml рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдорд╛рд╡реЗрди рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдХреЗрдВрджреНрд░реАрдп рдорд╛рд╡реЗрди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ pom.xml рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдкрдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЖрдкрдХрд╛ pom.xml рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП: рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдРрдкреНрд▓рд┐рдХреЗрд╢рди - 10рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдордиреЗ рдХреЗрд╡рд▓ 2 рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдЬреЛрдбрд╝реАрдВ - PostgreSQL рдФрд░ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЕрдм рдЬрд╛рд╡рд╛ рдХреЛрдб рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдФрд░ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдПрдВред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: UserрдФрд░ AutoрдХрдХреНрд╖рд╛рдПрдВред
package models;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table (name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column(name = "name")
    private String name;
    // You can omit the Column attribute if the name property matches the column name in the table
    private int age;

    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
    private List<Auto> autos;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
        autos = new ArrayList<>();
    }

    public void addAuto(Auto auto) {
        auto.setUser(this);
        autos.add(auto);
    }

    public void removeAuto(Auto auto) {
        autos.remove(auto);
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public List<Auto> getAutos() {
        return autos;
    }

    public void setAutos(List<Auto> autos) {
        this.autos = autos;
    }

    @Override
    public String toString() {
        return "models.User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
package models;

import javax.persistence.*;

@Entity
@Table(name = "autos")
public class Auto {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column (name = "model")
    private String model;

    // You can omit the Column attribute if the name property matches the column name in the table
    private String color;


    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    private User user;

    public Auto() {
    }

    public Auto(String model, String color) {
        this.model = model;
        this.color = color;
    }

    public int getId() {
        return id;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String toString() {
        return color + " " + model;
    }
}
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЕрд╕реНрдкрд╖реНрдЯ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред рдЖрдЗрдП рдЙрдирдореЗрдВ рдЦреБрджрд╛рдИ рд╢реБрд░реВ рдХрд░реЗрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдПрдиреЛрдЯреЗрд╢рди @Entity рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдкрдврд╝реЗрдВ рдФрд░ рдпрд╣ рд╕рдм рдХрдВрдард╕реНрде рдХрд░реЗрдВред рдпрд╣ рдиреАрдВрд╡ рдХреА рдиреАрдВрд╡ рд╣реИред рдпрд╣ рдПрдиреЛрдЯреЗрд╢рди рдЖрдкрдХреА рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рд╕ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдореИрдк рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдПрдХ рдЗрдХрд╛рдИ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
  • publicрдЗрд╕рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ ( рдпрд╛ protected) рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
  • рдЗрд╕реЗ рдиреЗрд╕реНрдЯреЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛, рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдпрд╛ рдПрдХenum
  • рдпрд╣ рдлрд╝реАрд▓реНрдб/рдЧреБрдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ finalрдФрд░ рди рд╣реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИfinal
  • рдЗрд╕рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ @Id рдлрд╝реАрд▓реНрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдкрдиреА рдЗрдХрд╛рдИ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ: рд╡реЗ рдкреИрд░ рдореЗрдВ рдЦреБрдж рдХреЛ рдЧреЛрд▓реА рдорд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд╕реНрдерд╛рди рд╣реИрдВред рдХреБрдЫ рднреВрд▓рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЗрдХрд╛рдИ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреА рд╣реИ:
  • рдЗрд╕рдореЗрдВ рдЦрд╛рд▓реА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
  • рдпрд╣ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ
  • рдЗрд╕рдореЗрдВ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, UserрдХрдХреНрд╖рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИред рдЗрд╕рдореЗрдВ id, name, рдФрд░ рд╣реИageрдЦреЗрддред рдЙрдирдХреЗ рдКрдкрд░ рд╕реНрдерд┐рдд рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ @Id рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлрд╝реАрд▓реНрдб рдЗрд╕ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред рд╡рд░реНрдЧ рдХреЗ рдКрдкрд░ @Table рдПрдиреЛрдЯреЗрд╢рди рдЙрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдирд╛рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдЖрдпреБ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдКрдкрд░ рдХреА рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ: рдпрджрд┐ рдХрдХреНрд╖рд╛ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдирд╛рдо рдХреЗ рд╕рдорд╛рди рд╣реИ, рддреЛ рдЖрдк @ рдХреЙрд▓рдо рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ рдЗрдВрдЧрд┐рдд рднрд╛рдЧ рдХреЗ рд▓рд┐рдП ("рд░рдгрдиреАрддрд┐ = рдЬреЗрдирд░реЗрд╢рдирдЯрд╛рдЗрдкред рдкрд╣рдЪрд╛рди"): рдЖрдИрдбреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд░рдгрдиреАрддрд┐рдпрд╛рдБ рд╣реИрдВред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЧреВрдЧрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреА рдХрд╛ рдорд╛рди рд╕реНрд╡рддрдГ рдЙрддреНрдкрдиреНрди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рддрджрдиреБрд╕рд╛рд░, рдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реЗрдЯрд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рднреА рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐,Userрд╡рд░реНрдЧ рдмрд╛рд╣рд░ рдЦрдбрд╝рд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдХрд╛рд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ! рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдРрдкреНрд▓рд┐рдХреЗрд╢рди - 11@OneToMany рдПрдиреЛрдЯреЗрд╢рди рд╕реВрдЪреА рдХреЗ рдКрдкрд░ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХрдИ рдХрд╛рд░реЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рдХреА рдПрдХ рд╣реА рд╡рд╕реНрддреБ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛ рд╕рдХрддреА рд╣реИрдВред Auto"рдореИрдкреНрдбрдмреА" рддрддреНрд╡ рд╡рд░реНрдЧ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд╛рд░ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдСрд░реНрдлрдирд░рд┐рдореВрд╡рд▓ рдПрд▓рд┐рдореЗрдВрдЯ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд░рд┐рдореВрд╡ рдСрдкрд░реЗрд╢рди рдХреЛ рдЙрди рд╕рдВрд╕реНрдерд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдЕрдм рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрд╕рд╕реЗ рдЬреБрдбрд╝реА рд╕рднреА рдХрд╛рд░реЗрдВ рднреА рд╣рдЯрд╛ рджреА рдЬрд╛рдПрдВрдЧреАред рдмрджрд▓реЗ рдореЗрдВ, рдореЗрдВAutoрд╡рд░реНрдЧ, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реАрд▓реНрдб рдХреЛ @ManyToOne рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде рджреЗрдЦреЗрдВрдЧреЗ (рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдИ рдСрдЯреЛ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рдФрд░ @JoinColumn рдПрдиреЛрдЯреЗрд╢рдиред рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ (рдпрд╛рдиреА рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдмрд╛рдд рдХреА рдереА) рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдЯреЛ рдЯреЗрдмрд▓ рдореЗрдВ рдХреМрди рд╕рд╛ рдХреЙрд▓рдо рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕рд┐рдЦрд╛рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдЪрд▓рд┐рдП HibernateSessionFactoryUtil рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХреНрд▓рд╛рд╕ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдХрд╛рдо рд╣реИ - рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╢рди рдлреИрдХреНрдЯреНрд░реА рдмрдирд╛рдирд╛ (рдлреИрдХреНрдЯреНрд░реА рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЛ рдирдорд╕реНрддреЗ рдХрд╣рдирд╛!) рдпрд╣ рдХреБрдЫ рдФрд░ рдХрд░рдирд╛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред
package utils;

import models.Auto;
import models.User;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class HibernateSessionFactoryUtil {
    private static SessionFactory sessionFactory;

    private HibernateSessionFactoryUtil() {}

    public static SessionFactory getSessionFactory() {
        if (sessionFactory == null) {
            try {
                Configuration configuration = new Configuration().configure();
                configuration.addAnnotatedClass(User.class);
                configuration.addAnnotatedClass(Auto.class);
                StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
                sessionFactory = configuration.buildSessionFactory(builder.build());

            } catch (Exception e) {
                System.out.println("╨Ш╤Б╨║╨╗╤О╤З╨╡╨╜╨╕╨╡!" + e);
            }
        }
        return sessionFactory;
    }
}
рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ, рд╣рдо рдПрдХ рдирдпрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕реЗ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрдЪрд╛рд╣рд┐рдП: UserрдФрд░ Autoред рд╡рд┐рдзрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ configuration.getProperties()ред рд╡рд╣рд╛рдВ рдЕрдиреНрдп рдЧреБрдг рдХреНрдпрд╛ рд╣реИрдВ? рд╡реЗ рдХрд╣рд╛рдВ рд╕реЗ рд╣реИрдВ? рдЧреБрдг рд╡рд┐рд╢реЗрд╖ hibernate.cfg.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдХреЗрддрд┐рдд рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реИрдВред рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдРрдкреНрд▓рд┐рдХреЗрд╢рди - 12Hibernate.cfg.xml рдпрд╣рд╛рдВ рдкрдврд╝рд╛ рдЧрдпрд╛ рд╣реИ: new Configuration().configure(); рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИ: рдЗрд╕рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░, рд╕рд╛рде рд╣реА show_sql рдкреИрд░рд╛рдореАрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╕рднреА рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕ рддрд░рд╣ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХрд┐рд╕реА рднреА рд╕рдордп рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, "рдЬрд╛рджреВ" рдХреА рдХрд┐рд╕реА рднреА рднрд╛рд╡рдирд╛ рдХреЛ рдЦрддреНрдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдЖрдЧреЗ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПUserDAOрдХрдХреНрд╖рд╛ред рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рд╣реИ - рдПрдХ рдЕрд▓рдЧ UserDAOрдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ UserDAOImplрдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдПрдВ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдЕрд╕рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдРрд╕рд╛ рдордд рдХрд░реЛ! DAO (рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ) рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рд╕рдмрд╕реЗ рдЖрдо рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓ рд╣реИ - рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░рдд рдмрдирд╛рдПрдБ, рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВред рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдбреЗрдЯрд╛ рд╣рдЯрд╛рдПрдВ - рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдбреАрдПрдУ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВред рдЖрдк рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╣рдорд╛рд░реА UserDaoрдХрдХреНрд╖рд╛ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреА рд╣реИ? рдареАрдХ рд╣реИ, рд╕рднреА DAO рдХреА рддрд░рд╣, рдпрд╣ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬреЗрдВ, рдЙрд╕рдХрд╛ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдЙрд╕реЗ рд╣рдЯрд╛рдПрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╣реЗрдЬреЗрдВ - рдпрд╣ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рд╕рдВрдкреВрд░реНрдгрддрд╛ рд╣реИред
package dao;

import models.Auto;
import models.User;
import org.hibernate.Session;
import org.hibernate.Transaction;
import utils.HibernateSessionFactoryUtil;
import java.util.List;

public class UserDao {

    public User findById(int id) {
        return HibernateSessionFactoryUtil.getSessionFactory().openSession().get(User.class, id);
    }

    public void save(User user) {
        Session session = HibernateSessionFactoryUtil.getSessionFactory().openSession();
        Transaction tx1 = session.beginTransaction();
        session.save(user);
        tx1.commit();
        session.close();
    }

    public void update(User user) {
        Session session = HibernateSessionFactoryUtil.getSessionFactory().openSession();
        Transaction tx1 = session.beginTransaction();
        session.update(user);
        tx1.commit();
        session.close();
    }

    public void delete(User user) {
        Session session = HibernateSessionFactoryUtil.getSessionFactory().openSession();
        Transaction tx1 = session.beginTransaction();
        session.delete(user);
        tx1.commit();
        session.close();
    }

    public Auto findAutoById(int id) {
        return HibernateSessionFactoryUtil.getSessionFactory().openSession().get(Auto.class, id);
    }

    public List<User> findAll() {
        List<User> users = (List<User>) HibernateSessionFactoryUtil.getSessionFactory().openSession().createQuery("From User").list();
        return users;
    }
}
UserDaoрдХреЗ рддрд░реАрдХреЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рдорд╛рди рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рд╕рддреНрд░ рдХрд╛рд░рдЦрд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рддреНрд░ рд╡рд╕реНрддреБ (рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рд╕рддреНрд░) рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рд╕рддреНрд░ рдХреЗ рднреАрддрд░ рдПрдХ рдПрдХрд▓ рд▓реЗрдирджреЗрди рдмрдирд╛рддреЗ рд╣реИрдВ, рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░рддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓реЗрдирджреЗрди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕рддреНрд░ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рдзрд┐рдпрд╛рдБ рд╕реНрд╡рдпрдВ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИрдВред рдбреАрдПрдУ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ "рджрд┐рд▓" рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдо рд╕реАрдзреЗ DAO рдирд╣реАрдВ рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЕрдкрдиреЗ main()рддрд░реАрдХреЗ рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЛ рдХрдХреНрд╖рд╛ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ UserServiceред
package services;

import dao.UserDao;
import models.Auto;
import models.User;

import java.util.List;

public class UserService {

    private UserDao usersDao = new UserDao();

    public UserService() {
    }

    public User findUser(int id) {
        return usersDao.findById(id);
    }

    public void saveUser(User user) {
        usersDao.save(user);
    }

    public void deleteUser(User user) {
        usersDao.delete(user);
    }

    public void updateUser(User user) {
        usersDao.update(user);
    }

    public List<User> findAllUsers() {
        return usersDao.findAll();
    }

    public Auto findAutoById(int id) {
        return usersDao.findAutoById(id);
    }


}
рдПрдХ рд╕реЗрд╡рд╛ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдкрд░рдд рд╣реИ рдЬреЛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╕реЗрд╡рд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ UserDaoрдФрд░ рдЗрд╕рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рдбреАрдПрдУ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдХреНрдпреЛрдВ рди рдХреЗрд╡рд▓ рдбреАрдПрдУ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ?), рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕рд╛рд░реА рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдХреЗ рд╕рд╛рде, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЗрдпрд░ рдХрд░рдирд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдРрд╕рд╛ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рд╣реИ - рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпрд╛рдж рд░рдЦреЗрдВ рдФрд░ "рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЗрдпрд░реНрд╕" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝реЗрдВ)ред рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдореЗрдВ рд╕рд░рд▓ рддрд░реНрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реЗрд╡рд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдХреЛрдб рдХреА рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ :) рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рд┐рдП! рд╡рд┐рдзрд┐ рдореЗрдВ main(), рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдЙрд╕рдХреА рдХрд╛рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдПрдХ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред
import models.Auto;
import models.User;
import services.UserService;

import java.sql.SQLException;

public class Main {
    public static void main(String[] args) throws SQLException {

        UserService userService = new UserService();
        User user = new User ("Jenny", 26);
        userService.saveUser(user);
        Auto ferrari = new Auto("Ferrari", "red");
        ferrari.setUser(user);
        user.addAuto(ferrari);
        Auto ford = new Auto("Ford", "black");
        ford.setUser(user);
        user.addAuto(ford);
        userService.updateUser(user);
    }
}
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЕрдкрдирд╛ рд░рд┐рдХреЙрд░реНрдб рд╣реИ, рдФрд░ рдСрдЯреЛ рдЯреЗрдмрд▓ рдХрд╛ рдЕрдкрдирд╛ рд░рд┐рдХреЙрд░реНрдб рд╣реИред рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдРрдкреНрд▓рд┐рдХреЗрд╢рди - 13рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдРрдкреНрд▓рд┐рдХреЗрд╢рди - 14рдЖрдЗрдП рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ рдФрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
import models.Auto;
import models.User;
import services.UserService;

import java.sql.SQLException;

public class Main {
    public static void main(String[] args) throws SQLException {

        UserService userService = new UserService();
        User user = new User ("Jenny", 26);
        userService.saveUser(user);
        Auto ferrari = new Auto("Ferrari", "red");
        user.addAuto(ferrari);
        Auto ford = new Auto("Ford", "black");
        ford.setUser(user);
        user.addAuto(ford);
        userService.updateUser(user);
        user.setName ("Benny");
        userService.updateUser(user);
    }
}
рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдРрдкреНрд▓рд┐рдХреЗрд╢рди - 15рдпрджрд┐ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ (рдСрдЯреЛ рд╕реНрд╡рдпрдВ рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ) рдФрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
import models.Auto;
import models.User;
import services.UserService;

import java.sql.SQLException;

public class Main {
    public static void main(String[] args) throws SQLException {

        UserService userService = new UserService();
        User user = new User ("Jenny", 26);
        userService.saveUser(user);
        Auto ferrari = new Auto("Ferrari", "red");
        user.addAuto(ferrari);
        Auto ford = new Auto("Ford", "black");
        ford.setUser(user);
        user.addAuto(ford);
        userService.updateUser(user);
        user.setName ("Benny");
        userService.updateUser(user);
        userService.deleteUser(user);
    }
}
рдФрд░ рд╣рдорд╛рд░реА рдЯреЗрдмрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрд╛рд▓реА рд╣реИрдВ (рдХрдВрд╕реЛрд▓ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ - рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╕рднреА рдЕрдиреБрд░реЛрдз рд╡рд╣рд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ)ред рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЖрдЬрдорд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реМрдВрдкреА рдЧрдИ рдЖрдИрдбреА рджреЗрдЦреЗрдВ рдФрд░ рдЗрд╕ рдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВmain()рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд▓рд╛рдиреЗ рдФрд░ рдХрдВрд╕реЛрд▓ рдкрд░ рдЕрдкрдиреА рдХрд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ред рдмреЗрд╢рдХ, рд╣рдордиреЗ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рджреЗрдЦрд╛ рд╣реИред рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдПрдВ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╣реИрдВ, рдФрд░ рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЬрд╛рд╡рд╛ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рдЙрджреНрдпреЛрдЧ рдЙрдкрдХрд░рдг рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ "рдЬрд╛рд╡рд╛ рдкрд░реНрд╕рд┐рд╕реНрдЯреЗрдВрд╕ рдПрдкреАрдЖрдИ рдФрд░ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ" рдкреБрд╕реНрддрдХ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╕рдореАрдХреНрд╖рд╛ рдХреА рдереАред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдорджрджрдЧрд╛рд░ рд░рд╣рд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдкреВрдЫреЗрдВред рдореБрдЭреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА :) рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рд▓рд╛рдЗрдХ" рдкреЛрд╕реНрдЯ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рд▓реЗрдЦрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рди рднреВрд▓реЗрдВред рдпрд╛ рдмреЗрд╣рддрд░ рдЕрднреА рддрдХ - "рдЗрд╕реЗ рдкреНрдпрд╛рд░ рдХрд░реЛ" :) рдЖрдкрдХреА рдкрдврд╝рд╛рдИ рдореЗрдВ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!
рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ
  • рд▓реЛрдХрдкреНрд░рд┐рдп
  • рдирдпрд╛
  • рдкреБрд░рд╛рдирд╛
рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рд╛рдЗрди рдЗрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдЗрд╕ рдкреЗрдЬ рдкрд░ рдЕрднреА рддрдХ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ