CodeGym/Java Blog/рдпрд╛рджреГрдЪреНрдЫрд┐рдХ/рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди
John Squirrels
рдкрд╛рддрд│реА 41
San Francisco

рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди

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

рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдореНрд╣рдгрдЬреЗ рдХрд╛рдп?

рд╣реЗ рд╕рд░реНрд╡рд╛рдд рд▓реЛрдХрдкреНрд░рд┐рдп рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдореЕрдкрд┐рдВрдЧ (ORM) рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдВрдкреИрдХреА рдПрдХ рдЖрд╣реЗ. рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдореЕрдкрд┐рдВрдЧ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЖрдгрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рд░реЗрдХреЙрд░реНрдбрдордзреАрд▓ рд╕рдВрдмрдВрдз рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ. рдЕрд░реНрдерд╛рдд, рд╣рд╛рдпрдмрд░рдиреЗрдЯрдордзреНрдпреЗ рдЦреВрдк рд╡рд┐рд╕реНрддреГрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЖрдореНрд╣реА рд╕рд░реНрд╡рд╛рдд рд╕реЛрдкреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдВрд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВ. рдЖрдордЪреЗ рдзреНрдпреЗрдп CRUD (рддрдпрд╛рд░ рдХрд░рд╛, рд╡рд╛рдЪрд╛, рдЕрджреНрдпрддрдирд┐рдд рдХрд░рд╛, рд╣рдЯрд╡рд╛) рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╣реЗ рдЬреЗ рд╕рдХреНрд╖рдо рдЕрд╕реЗрд▓:
  1. рд╡рд╛рдкрд░рдХрд░реНрддреЗ (рд╡рд╛рдкрд░рдХрд░реНрддрд╛) рддрдпрд╛рд░ рдХрд░рд╛, рддреНрдпрд╛рдВрдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ ID рджреНрд╡рд╛рд░реЗ рд╢реЛрдзрд╛, рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рддреНрдпрд╛рдВрдЪрд╛ рдбреЗрдЯрд╛ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рд╛ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреВрди рд╣рдЯрд╡рд╛.
  2. рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдХрд╛рд░ рд╡рд╕реНрддреВ (рдСрдЯреЛ) рдирд┐рдпреБрдХреНрдд рдХрд░рд╛. рдбреЗрдЯрд╛рдмреЗрд╕рдордзреВрди рдХрд╛рд░ рддрдпрд╛рд░ рдХрд░рд╛, рдЕрдкрдбреЗрдЯ рдХрд░рд╛, рд╢реЛрдзрд╛ рдЖрдгрд┐ рд╣рдЯрд╡рд╛.
  3. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреВрди "рдорд╛рд▓рдХрд╡рд┐рд░рд╣рд┐рдд" рдХрд╛рд░ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рдХрд╛рдврд▓реНрдпрд╛ рдкрд╛рд╣рд┐рдЬреЗрдд. рджреБрд╕рд▒реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд, рдЬреЗрд╡реНрд╣рд╛ рдПрдЦрд╛рджрд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╣рдЯрд╡рд┐рд▓рд╛ рдЬрд╛рддреЛ, рддреЗрд╡реНрд╣рд╛ рддреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдорд╛рд▓рдХреАрдЪреНрдпрд╛ рд╕рд░реНрд╡ рдХрд╛рд░ рджреЗрдЦреАрд▓ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреВрди рд╣рдЯрд╡рд┐рд▓реНрдпрд╛ рдкрд╛рд╣рд┐рдЬреЗрдд.
рдЖрдордЪреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреА рд░рдЪрдирд╛ рдпрд╛рдкреНрд░рдорд╛рдгреЗ рдХреЗрд▓реА рдЬрд╛рдИрд▓: рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди - реирдЬрд╕реЗ рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛, рдХрд╛рд╣реАрд╣реА рдХреНрд▓рд┐рд╖реНрдЯ рдирд╛рд╣реА. рдХреЙрдиреНрдлрд┐рдЧрд╕рд╣ 6 рд╡рд░реНрдЧ + 1 рдлрд╛рдЗрд▓. рдкреНрд░рдердо, IntelliJ IDEA рдордзреНрдпреЗ рдПрдХ рдирд╡реАрди Maven рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░рд╛. рдлрд╛рдЗрд▓ -> рдирд╡реАрди рдкреНрд░рдХрд▓реНрдк. рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкреНрд░рдХрд▓реНрдк рдкреНрд░рдХрд╛рд░рд╛рдВрдкреИрдХреА Maven рдирд┐рд╡рдбрд╛ рдЖрдгрд┐ рдкреБрдвреАрд▓ рдЪрд░рдгрд╛рд╡рд░ рдЬрд╛. рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди - рейApache Maven POM рдлрд╛рдЗрд▓реНрд╕рдордзреАрд▓ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрд░рдЪрдиреЗрдЪреНрдпрд╛ рд╡рд░реНрдгрдирд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдХрд▓реНрдк рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЖрд╣реЗ. рддреБрдордЪреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рд╕рдВрдкреВрд░реНрдг рд╕рдВрд░рдЪрдиреЗрдЪреЗ рд╡рд░реНрдгрди pom.xml рдордзреНрдпреЗ рдХреЗрд▓реЗ рдЬрд╛рдИрд▓, рдПрдХ рдлрд╛рдЗрд▓ рдЬреА IDEA рд╕реНрд╡рддрдГ рддреБрдордЪреНрдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдЪреНрдпрд╛ рд░реВрдЯрдордзреНрдпреЗ рддрдпрд╛рд░ рдХрд░реЗрд▓. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдордзреНрдпреЗ, рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓ рдореЕрд╡реЗрди рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ: рдЧреНрд░реБрдкрдЖрдпрдбреА рдЖрдгрд┐ рдЖрд░реНрдЯрд┐рдлреЕрдХреНрдЯрдЖрдпрдбреА. рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ, рдЧреНрд░реБрдкрдЖрдпрдбреА рд╣реЗ рд╕рд╣рд╕рд╛ рдХрдВрдкрдиреА рдХрд┐рдВрд╡рд╛ рд╡реНрдпрд╡рд╕рд╛рдп рдпреБрдирд┐рдЯрдЪреЗ рд╡рд░реНрдгрди рдЕрд╕рддреЗ. рдХрдВрдкрдиреАрдЪреЗ рдбреЛрдореЗрди рдирд╛рд╡ рдХрд┐рдВрд╡рд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдпреЗрдереЗ рдЬрд╛рдК рд╢рдХрддреЗ. рддреНрдпрд╛ рдмрджрд▓реНрдпрд╛рдд, artifactId рд╣реЗ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рдирд╛рд╡ рдЖрд╣реЗ. GroupdId рд╕рд╛рдареА, рддреБрдореНрд╣реА рдПрдВрдЯрд░ рдХрд░реВ рд╢рдХрддрд╛ com.yourNickname.codegym. рдпрд╛рдЪрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╡рд░ рдХреЛрдгрддрд╛рд╣реА рдкрд░рд┐рдгрд╛рдо рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА. рдЖрд░реНрдЯрд┐рдлреЕрдХреНрдЯрдЖрдпрдбреАрд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рдбрдгрд╛рд░реЗ рдХреЛрдгрддреЗрд╣реА рдкреНрд░рдХрд▓реНрдк рдирд╛рд╡ рдирд┐рд╡рдбрд╛. рдЖрд╡реГрддреНрддреА рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╕реЛрдбрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ. рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЕрд░реНрдЬ - 4рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рд╕реНрдХреНрд░реАрдирд╡рд░, рдкреВрд░реНрд╡реА рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдЪреА рдлрдХреНрдд рдкреБрд╖реНрдЯреА рдХрд░рд╛.рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЕрд░реНрдЬ - 5рдореНрд╣рдгреВрди, рдЖрдореНрд╣реА рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХреЗрд▓рд╛. рдЖрддрд╛ рдлрдХреНрдд рдХрд╛рд╣реА рдХреЛрдб рд▓рд┐рд╣рд┐рдгреЗ рдЖрдгрд┐ рддреЗ рдХрд╛рд░реНрдп рдХрд░рдгреЗ рдмрд╛рдХреА рдЖрд╣реЗ :) рдкреНрд░рдердо рдЧреЛрд╖реНрдЯреА: рдЬрд░ рдЖрдореНрд╣рд╛рд▓рд╛ рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгрд╛рд░рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪрд╛ рдЕрд╕реЗрд▓ рддрд░ рдЖрдореНрд╣реА рдбреЗрдЯрд╛рдмреЗрд╕рд╢рд┐рд╡рд╛рдп рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА! рдпреЗрдереВрди PostgreSQL рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛ (рдореА рдЖрд╡реГрддреНрддреА 9 рд╡рд╛рдкрд░рдд рдЖрд╣реЗ). PostgreSQL рдордзреНрдпреЗ рдбреАрдлреЙрд▓реНрдЯ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ 'postgres' рдЖрд╣реЗ тАФ рддреБрдореНрд╣реА рдЬреЗрд╡реНрд╣рд╛ рдЗрдиреНрд╕реНрдЯреЙрд▓ рдХрд░рддрд╛ рддреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рд╕рд╛рдареА рдкрд╛рд╕рд╡рд░реНрдб рд╡рд┐рдЪрд╛рд░ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓. рдкрд╛рд╕рд╡рд░реНрдб рд╡рд┐рд╕рд░реВ рдирдХрд╛. рдЖрдореНрд╣рд╛рд▓рд╛ рддреЗ рдирдВрддрд░ рд▓рд╛рдЧреЗрд▓! (рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдордзреНрдпреЗ рдбреАрдлреЙрд▓реНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рдкрд░рдгреЗ рд╣реА рд╡рд╛рдИрдЯ рдкрджреНрдзрдд рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЖрдореНрд╣реА рдЖрдкрд▓рд╛ рд╕реНрд╡рддрдГрдЪрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдпрд╛рд░ рдХрд░реВрди рдЕрд▓реНрд╕рд░рдЪреНрдпрд╛ рдХрд╛рд░рдгрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреЗ рдХрд░реВ). рддреБрдореНрд╣реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЖрдгрд┐ SQL рдХреНрд╡реЗрд░реАрдЪреЗ рдорд┐рддреНрд░ рдирд╕рд▓реНрдпрд╛рд╕, рдЪрд╛рдВрдЧрд▓реА рдмрд╛рддрдореА рдЖрд╣реЗ. IntelliJ IDEA рдбреЗрдЯрд╛рдмреЗрд╕рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреВрд░реНрдгрдкрдгреЗ рдпреЛрдЧреНрдп рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЕрд░реНрдЬ - 6(IDEA рдЪреНрдпрд╛ рдЙрдЬрд╡реНрдпрд╛ рдЙрдкрдЦрдВрдбрд╛рд╡рд░, рдбреЗрдЯрд╛рдмреЗрд╕ рдЯреЕрдмрд╡рд░ рд╕реНрдерд┐рдд рдЖрд╣реЗ). рдХрдиреЗрдХреНрд╢рди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, "+" рдХреНрд▓рд┐рдХ рдХрд░рд╛ рдЖрдгрд┐ рдЖрдордЪрд╛ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд (PostgeSQL) рдирд┐рд╡рдбрд╛. рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЖрдгрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ (рджреЛрдиреНрд╣реАрдВрд╕рд╛рдареА "рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕") рдлреАрд▓реНрдб рднрд░рд╛ рдЖрдгрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓рдЪреНрдпрд╛ рд╕реНрдерд╛рдкрдиреЗрджрд░рдореНрдпрд╛рди рд╕реЗрдЯ рдХреЗрд▓реЗрд▓рд╛ рдкрд╛рд╕рд╡рд░реНрдб рдкреНрд░рд╡рд┐рд╖реНрдЯ рдХрд░рд╛. рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдбреНрд░рд╛рдЗрд╡реНрд╣рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛. рдЖрдкрдг рд╣реЗ рддреНрдпрд╛рдЪ рдкреГрд╖реНрдард╛рд╡рд░ рдХрд░реВ рд╢рдХрддрд╛. рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдЭрд╛рд▓реЗ рдЖрд╣реЗ рд╣реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "рдХрдиреЗрдХреНрд╢рди рдЪрд╛рдЪрдгреА" рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рд╛. рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ "рдпрд╢рд╕реНрд╡реА" рджрд┐рд╕рдд рдЕрд╕реЗрд▓ рддрд░ рдкреБрдвреЗ рдЬрд╛. рдЖрддрд╛ рдЖрдкрдг рдЖрд╡рд╢реНрдпрдХ рдЯреЗрдмрд▓ рддрдпрд╛рд░ рдХрд░реВ. рдПрдХреВрдг рджреЛрди рдЕрд╕рддреАрд▓: рд╡рд╛рдкрд░рдХрд░реНрддреЗ рдЖрдгрд┐ рдСрдЯреЛ. рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рд╛рд░рдгреАрд╕рд╛рдареА рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕: рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЕрд░реНрдЬ - 7рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдЖрдпрдбреА рд╣реА рдкреНрд░рд╛рдердорд┐рдХ рдХреА рдЖрд╣реЗ. рдПрд╕рдХреНрдпреВрдПрд▓рдордзреНрдпреЗ рдкреНрд░рд╛рдердорд┐рдХ рдХреА рдХрд╛рдп рдЖрд╣реЗ рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдорд╛рд╣рд┐рддреА рдирд╕рд▓реНрдпрд╛рд╕, рддреЗ Google рдХрд░рд╛. рд╣реЗ рдорд╣рддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ. рдСрдЯреЛ рдЯреЗрдмрд▓рд╕рд╛рдареА рд╕реЗрдЯрд┐рдВрдЧреНрдЬ: рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЕрд░реНрдЬ - 8рдСрдЯреЛ рдЯреЗрдмрд▓рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдкрд░рджреЗрд╢реА рдХреА рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╣реЗ рдЖрдордЪреНрдпрд╛ рдЯреЗрдмрд▓рд╛рдВрдирд╛ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рдо рдХрд░реЗрд▓. рдореА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ рдХреА рдЖрдкрдг рдпрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рд╡рд╛рдЪрд╛. рд╕реЛрдкреНрдпрд╛ рднрд╛рд╖реЗрдд рд╕рд╛рдВрдЧрд╛рдпрдЪреЗ рддрд░ рддреЗ рдмрд╛рд╣реНрдп рд╕рд╛рд░рдгреАрдЪрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЗ, рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рд╡рд╛рдкрд░рдХрд░реНрддреЗ. рдЬрд░ рдПрдЦрд╛рджреА рдХрд╛рд░ рдЖрдпрдбреА = 1 рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреА рдЕрд╕реЗрд▓, рддрд░ рдСрдЯреЛрдЪреЗ user_id рдлреАрд▓реНрдб 1 рдЪреНрдпрд╛ рдмрд░реЛрдмрд░реАрдЪреЗ рдЕрд╕реЗрд▓. рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдХрд╛рд░рд╢реА рдЬреЛрдбрддреЛ. рдЖрдордЪреНрдпрд╛ рдСрдЯреЛ рдЯреЗрдмрд▓рдордзреНрдпреЗ, user_id рдлреАрд▓реНрдб рдкрд░рджреЗрд╢реА рдХреА рдореНрд╣рдгреВрди рдХрд╛рдо рдХрд░реЗрд▓. рддреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЯреЗрдмрд▓рдЪреНрдпрд╛ рдЖрдпрдбреА рдлреАрд▓реНрдбрдЪрд╛ рд╕рдВрджрд░реНрдн рджреЗрдИрд▓. рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЕрд░реНрдЬ - репрддрд░, рдЖрдореНрд╣реА рджреЛрди рдЯреЗрдмрд▓рд╛рдВрд╕рд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЖрд╣реЗ. рдЬрд╛рд╡рд╛ рдХреЛрдбрдордзреВрди рддреЗ рдХрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛рд╡реЗ рд╣реЗ рд╕рдордЬреВрди рдШреЗрдгреЗ рдмрд╛рдХреА рдЖрд╣реЗ. рдЖрдореНрд╣реА pom.xml рдлрд╛рдИрд▓рд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░реВ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдпрдмреНрд░рд░реА рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ (Maven рдордзреНрдпреЗ рддреНрдпрд╛рдВрдирд╛ рдЕрд╡рд▓рдВрдмрди рдореНрд╣рдгрддрд╛рдд). рд╕рд░реНрд╡ рд▓рд╛рдпрдмреНрд░рд░реА рдордзреНрдпрд╡рд░реНрддреА рдорд╛рд╡реЗрди рднрд╛рдВрдбрд╛рд░рд╛рдд рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЖрд╣реЗрдд. рддреБрдореНрд╣реА pom.xml рдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд▓рд╛рдпрдмреНрд░рд░реА рддреБрдордЪреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдд рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗрдд. рддреБрдордЪреЗ pom.xml рдЕрд╕реЗ рджрд┐рд╕рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ: рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЕрд░реНрдЬ - 10рдХрд╛рд╣реАрд╣реА рдХреНрд▓рд┐рд╖реНрдЯ рдирд╛рд╣реА, рдЬрд╕реЗ рддреБрдореНрд╣реА рдкрд╛рд╣реВ рд╢рдХрддрд╛. PostgreSQL рдЖрдгрд┐ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рдлрдХреНрдд 2 рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдЬреЛрдбрд▓реЗ. рдЖрддрд╛ рдЬрд╛рд╡рд╛ рдХреЛрдбрдХрдбреЗ рд╡рд│реВ. рдкреНрд░рдХрд▓реНрдкрд╛рддреАрд▓ рд╕рд░реНрд╡ рдЖрд╡рд╢реНрдпрдХ рдкреЕрдХреЗрдЬреЗрд╕ рдЖрдгрд┐ рд╡рд░реНрдЧ рддрдпрд╛рд░ рдХрд░рд╛. рдкреНрд░рд╛рд░рдВрдн рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ рдбреЗрдЯрд╛ рдореЙрдбреЗрд▓рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ: 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 рдЖрд╣реЗ. рддреНрдпрд╛рдмрджреНрджрд▓ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛рд╡рд░ рд╡рд╛рдЪрд╛ рдЖрдгрд┐ рдордирд╛рдкрд╛рд╕реВрди рдЬрд╛рдгреВрди рдШреНрдпрд╛. рд╣рд╛ рдкрд╛рдпрд╛рдЪрд╛ рдкрд╛рдпрд╛ рдЖрд╣реЗ. рд╣реЗ рднрд╛рд╖реНрдп рддреБрдордЪреНрдпрд╛ Java рд╡рд░реНрдЧрд╛рддреАрд▓ рд╡рд╕реНрддреВ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдореЕрдк рдХрд░реВ рджреЗрддреЗ. рд╡рд░реНрдЧ рдПрдХ рдШрдЯрдХ рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА, рддреНрдпрд╛рдиреЗ рдЦрд╛рд▓реАрд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкреВрд░реНрдг рдХреЗрд▓реНрдпрд╛ рдкрд╛рд╣рд┐рдЬреЗрдд:
  • рддреНрдпрд╛рдд рд░рд┐рдХреНрдд рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ ( publicрдХрд┐рдВрд╡рд╛ protected) рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ
  • рд╣реЗ рдиреЗрд╕реНрдЯреЗрдб рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реА, рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд┐рдВрд╡рд╛ рдПenum
  • рд╣реЗ рдлреАрд▓реНрдб/рдЧреБрдгрдзрд░реНрдо рдЕрд╕реВ рд╢рдХрдд рдирд╛рд╣реА finalрдЖрдгрд┐ рдЕрд╕реВ рд╢рдХрдд рдирд╛рд╣реАfinal
  • рддреНрдпрд╛рдд рдХрд┐рдорд╛рди рдПрдХ @Id рдлреАрд▓реНрдб рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рддреБрдордЪреЗ рдШрдЯрдХ рд╡рд░реНрдЧ рддрдкрд╛рд╕рд╛: рд╕реНрд╡рддрдГрд▓рд╛ рдкрд╛рдпрд╛рдд рдЧреЛрд│реНрдпрд╛ рдШрд╛рд▓рдгреНрдпрд╛рд╕рд╛рдареА рддреА рдЦреВрдк рд▓реЛрдХрдкреНрд░рд┐рдп рдард┐рдХрд╛рдгреЗ рдЖрд╣реЗрдд. рдХрд╛рд╣реАрддрд░реА рд╡рд┐рд╕рд░рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ. рд╢рд┐рд╡рд╛рдп, рдПрдЦрд╛рджреА рд╕рдВрд╕реНрдерд╛ рдкреБрдвреАрд▓ рдЧреЛрд╖реНрдЯреА рдХрд░реВ рд╢рдХрддреЗ:
  • рдпрд╛рдд рд░рд┐рдХреНрдд рдирд╕рд▓реЗрд▓реЗ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЕрд╕реВ рд╢рдХрддрд╛рдд
  • рддреЛ рд╡рд╛рд░рд╕рд╛ рдЖрдгрд┐ рд╡рд╛рд░рд╕рд╛ рдорд┐рд│реВ рд╢рдХрддреЛ
  • рдпрд╛рдд рдЗрддрд░ рдкрджреНрдзрддреА рдЕрд╕реВ рд╢рдХрддрд╛рдд рдЖрдгрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдХрд░реВ рд╢рдХрддрд╛рдд.
рдЬрд╕реЗ рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛, Userрд╡рд░реНрдЧ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рд╛рд░рдгреАрд╕рд╛рд░рдЦреЗрдЪ рдЖрд╣реЗ. рддреНрдпрд╛рдд id, name, рдЖрдгрд┐ рдЖрд╣реЗageрдлреАрд▓реНрдб рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд░ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рднрд╛рд╖реНрдпрд╛рдВрдирд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА: рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ рдХреА @Id рд╣реЗ рдлреАрд▓реНрдб рдпрд╛ рд╡рд░реНрдЧрд╛рддреАрд▓ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреЗ рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ. рд╡рд░реНрдЧрд╛рдЪреНрдпрд╛ рд╡рд░реАрд▓ @Table рднрд╛рд╖реНрдп рд╣реЗ рд╕рд╛рд░рдгреАрдЪреЗ рдирд╛рд╡ рджрд░реНрд╢рд╡рддреЗ рдЬреЗрдереЗ рд╡рд╕реНрддреВ рд▓рд┐рд╣рд┐рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд. рд╡рдп рдлреАрд▓реНрдбрд╡рд░реАрд▓ рдЯрд┐рдкреНрдкрдгреА рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛: рдЬрд░ рд╡рд░реНрдЧрд╛рддреАрд▓ рдлреАрд▓реНрдбрдЪреЗ рдирд╛рд╡ рдЯреЗрдмрд▓рдЪреНрдпрд╛ рдирд╛рд╡рд╛рдкреНрд░рдорд╛рдгреЗрдЪ рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА @Column рднрд╛рд╖реНрдп рд╡рдЧрд│реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рддреЗ рдХрд╛рд░реНрдп рдХрд░реЗрд▓. рдмреНрд░реЗрд╕реЗрд╕рдордзреНрдпреЗ рджрд░реНрд╢рд╡рд┐рд▓реЗрд▓реНрдпрд╛ рднрд╛рдЧрд╛рд╕рд╛рдареА ("strategy = GenerationType.IDENTITY"): рдЖрдпрдбреА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдиреЗрдХ рдзреЛрд░рдгреЗ рдЖрд╣реЗрдд. рддреБрдореНрд╣реА рддреНрдпрд╛рдВрдирд╛ Google рдХрд░реВ рд╢рдХрддрд╛, рдкрд░рдВрддреБ рдЖрдордЪреНрдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рд╕рд╛рдареА, рддреНрд░рд╛рд╕ рджреЗрдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА. рдореБрдЦреНрдп рдореНрд╣рдгрдЬреЗ рдЖрдордЪреНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рд╕рд╛рдареА id рдЪреЗ рдореВрд▓реНрдп рдЖрдкреЛрдЖрдк рддрдпрд╛рд░ рд╣реЛрдИрд▓. рддреНрдпрд╛рдиреБрд╕рд╛рд░, рдЖрдпрдбреАрд╕рд╛рдареА рдХреЛрдгрддреЗрд╣реА рд╕реЗрдЯрд░ рдирд╛рд╣реА рдЖрдгрд┐ рдЖрдореНрд╣реА рддреЗ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░рдордзреНрдпреЗ рджреЗрдЦреАрд▓ рд╕реЗрдЯ рдХрд░рдд рдирд╛рд╣реА. рддрдерд╛рдкрд┐,Userрд╡рд░реНрдЧ рд╡реЗрдЧрд│реЗ рдЖрд╣реЗ. рддреНрдпрд╛рдд рдЧрд╛рдбреНрдпрд╛рдВрдЪреА рдпрд╛рджреА рдЖрд╣реЗ! рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЕрд░реНрдЬ - 11@OneToMany рднрд╛рд╖реНрдп рд╕реВрдЪреАрдЪреНрдпрд╛ рд╡рд░ рд▓рдЯрдХрд▓реЗрд▓реЗ рдЖрд╣реЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рдЕрдиреЗрдХ рдХрд╛рд░ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╡рд░реНрдЧрд╛рдЪреНрдпрд╛ рд╕рдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЕрд╕реВ рд╢рдХрддрд╛рдд. "mappedBy" рдШрдЯрдХ рд╡рд░реНрдЧрд╛рдЪреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдлреАрд▓реНрдбрдЪрд╛ рд╕рдВрджрд░реНрдн рджреЗрддреЛ Auto. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, рдХрд╛рд░ рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗрдд. orphanRemoval рдШрдЯрдХ рдпрд╛рдкреБрдвреЗ рд╕рдВрдмрдВрдз рдирд╕рд▓реЗрд▓реНрдпрд╛ рдШрдЯрдХрд╛рдВрдирд╛ рдХрд╛рдврдгреНрдпрд╛рдЪреА рдХреНрд░рд┐рдпрд╛ рд▓рд╛рдЧреВ рдХрд░рд╛рдпрдЪреА рдХреА рдирд╛рд╣реА рд╣реЗ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ. рдЖрдореНрд╣реА рдбреЗрдЯрд╛рдмреЗрд╕рдордзреВрди рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╣рдЯрд╡рд┐рд▓реНрдпрд╛рд╕, рддреНрдпрд╛рдЪреНрдпрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рд╕рд░реНрд╡ рдХрд╛рд░ рджреЗрдЦреАрд▓ рд╣рдЯрд╡рд┐рд▓реНрдпрд╛ рдЬрд╛рддреАрд▓. рдпрд╛рдордзреВрди, рдордзреНрдпреЗ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 рдлрд╛рдЗрд▓рдордзреНрдпреЗ рджрд░реНрд╢рд╡рд┐рд▓реЗрд▓реА рд╣рд╛рдпрдмрд░рдиреЗрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдЖрд╣реЗрдд. рддреБрдордЪрд╛ рдкрд╣рд┐рд▓рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЕрд░реНрдЬ - резреиHibernate.cfg.xml рдпреЗрдереЗ рд╡рд╛рдЪрд▓реЗ рдЖрд╣реЗ: new Configuration().configure(); рдЬрд╕реЗ рддреБрдореНрд╣реА рдкрд╛рд╣рдд рдЖрд╣рд╛рдд, рддреНрдпрд╛рдд рдХрд╛рд╣реА рд╡рд┐рд╢реЗрд╖ рдирд╛рд╣реА: рддреНрдпрд╛рдд рдбреЗрдЯрд╛рдмреЗрд╕рд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕, рддрд╕реЗрдЪ show_sql рдкреЕрд░рд╛рдореАрдЯрд░ рдЖрд╣реЗрдд. рд╣реЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рд╣рд╛рдпрдмрд░рдиреЗрдЯрджреНрд╡рд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ sql рдХреНрд╡реЗрд░реА рдХрдиреНрд╕реЛрд▓рд╡рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддреАрд▓. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдХреЛрдгрддреНрдпрд╛рд╣реА рдХреНрд╖рдгреА рдиреЗрдордХреЗ рдХрд╛рдп рдХрд░рдд рдЖрд╣реЗ рд╣реЗ рджрд┐рд╕реЗрд▓, "рдЬрд╛рджреВ" рдЪреА рдХреЛрдгрддреАрд╣реА рднрд╛рд╡рдирд╛ рдХрд╛рдвреВрди рдЯрд╛рдХрддреЗ. рдкреБрдвреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗUserDAOрд╡рд░реНрдЧ рдЗрдВрдЯрд░рдлреЗрд╕рджреНрд╡рд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдгреЗ рд╣реА рд╕рд░реНрд╡реЛрддреНрддрдо рд╕рд░рд╛рд╡ рдЖрд╣реЗ - рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ UserDAOрдЗрдВрдЯрд░рдлреЗрд╕ рдЖрдгрд┐ UserDAOImplрдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рддрдпрд╛рд░ рдХрд░рд╛, рдкрд░рдВрддреБ рдХреЛрдбрдЪреЗ рдкреНрд░рдорд╛рдг рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдореА рд╣реЗ рд╡рдЧрд│реЗрди. рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ рд╣реЗ рдХрд░реВ рдирдХрд╛! DAO (рдбреЗрдЯрд╛ рдНрдХреНрд╕реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ) рдбрд┐рдЭрд╛рдЗрди рдкреЕрдЯрд░реНрди рд╕рд░реНрд╡рд╛рдд рд╕рд╛рдорд╛рдиреНрдп рдЖрд╣реЗ. рдХрд▓реНрдкрдирд╛ рдЕрдЧрджреА рд╕реЛрдкреА рдЖрд╣реЗ тАФ рдлрдХреНрдд рдбреЗрдЯрд╛ рдНрдХреНрд╕реЗрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрддрд░ рддрдпрд╛рд░ рдХрд░рд╛, рдЖрдгрдЦреА рдХрд╛рд╣реА рдирд╛рд╣реА. рдбреЗрдЯрд╛рдмреЗрд╕рдордзреВрди рдбреЗрдЯрд╛ рдорд┐рд│рд╡рд╛, рдбреЗрдЯрд╛ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рд╛, рдбреЗрдЯрд╛ рд╣рдЯрд╡рд╛ - рдЗрддрдХреЗрдЪ. 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 рд╣реЗ рдЖрдордЪреНрдпрд╛ рдЕрд░реНрдЬрд╛рдЪреЗ "рд╣реГрджрдп" рдЖрд╣реЗ. рддрдерд╛рдкрд┐, рдЖрдореНрд╣реА рдереЗрдЯ 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рддреНрдпрд╛рдЪреНрдпрд╛ рдкрджреНрдзрддреАрдВрдордзреНрдпреЗ DAO рдкрджреНрдзрддреАрдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЕрд╕рддреЛ рдЖрдгрд┐ рдХреЙрд▓ рдХрд░рддреЛ. рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рдЖрдореНрд╣реА рдпреЗрдереЗ рдлрдВрдХреНрд╢рдиреНрд╕рдЪреА рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдд рдЖрд╣реЛрдд (рдлрдХреНрдд DAO рдСрдмреНрдЬреЗрдХреНрдЯрд╡рд░реВрди рдкрджреНрдзрддреА рдХрд╛ рдХреЙрд▓ рдХрд░реВ рдирдпреЗ?), рдкрд░рдВрддреБ рдмрд░реЗрдЪ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЖрдгрд┐ рдЬрдЯрд┐рд▓ рд▓реЙрдЬрд┐рдХрд╕рд╣, рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд▓рд╛ рд▓реЗрдпрд░ рдХрд░рдгреЗ рдЦреВрдк рдлрд╛рдпрджреЗ рджреЗрддреЗ (рдЕрд╕реЗ рдХрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рд╕рд░рд╛рд╡ рдЖрд╣реЗ тАФ рднрд╡рд┐рд╖реНрдпрд╛рдд рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛ рдЖрдгрд┐ "рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реНрддрд░" рдмрджреНрджрд▓ рд╡рд╛рдЪрд╛). рдЖрдордЪреНрдпрд╛ рд╕реЗрд╡реЗрдордзреНрдпреЗ рд╕рд╛рдзреЗ рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╡рд╛рд╕реНрддрд╡рд┐рдХ-рдЬрдЧрд╛рддреАрд▓ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреАрд▓ рд╕реЗрд╡рд╛ рдкрджреНрдзрддреАрдВрдордзреНрдпреЗ рдХреЛрдбрдЪреНрдпрд╛ рдПрдХрд╛рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдУрд│реАрдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЖрд╣реЗ :) рдЖрддрд╛ рдЖрдкрд▓реНрдпрд╛рдХрдбреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реЗрд▓реЗ рд╕рд░реНрд╡рдХрд╛рд╣реА рдЖрд╣реЗ! рдкрджреНрдзрддреАрдордзреНрдпреЗ 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()рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреВрди рдЖрдгрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдХрдиреНрд╕реЛрд▓рд╡рд░ рддреНрдпрд╛рдЪреНрдпрд╛ рдХрд╛рд░рдЪреА рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкрджреНрдзрдд. рдЕрд░реНрдерд╛рдд, рдЖрдореНрд╣реА рд╣рд╛рдпрдмрд░рдиреЗрдЯрдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдЪрд╛ рдлрдХреНрдд рдПрдХ рдЫреЛрдЯрд╛рд╕рд╛ рднрд╛рдЧ рдкрд╛рд╣рд┐рд▓рд╛ рдЖрд╣реЗ. рддреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЦреВрдк рд╡рд┐рд╕реНрддреГрдд рдЖрд╣реЗ рдЖрдгрд┐ рдЬрд╛рд╡рд╛ рд╡рд┐рдХрд╛рд╕рд╛рд╕рд╛рдареА рд╣реЗ рдПрдХ рдорд╛рдирдХ рдЙрджреНрдпреЛрдЧ рд╕рд╛рдзрди рдЖрд╣реЗ. рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рддреНрдпрд╛рдЪрд╛ рддрдкрд╢реАрд▓рд╡рд╛рд░ рдЕрднреНрдпрд╛рд╕ рдХрд░рд╛рдпрдЪрд╛ рдЕрд╕реЗрд▓ рддрд░ рдореА "Java Persistence API рдЖрдгрд┐ Hibernate" рдпрд╛ рдкреБрд╕реНрддрдХрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░реВ рд╢рдХрддреЛ. рдореА рдорд╛рдЧреАрд▓ рд▓реЗрдЦрд╛рдд рдкреБрдирд░рд╛рд╡рд▓реЛрдХрди рдХреЗрд▓реЗ. рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рд╣рд╛ рд▓реЗрдЦ рд╡рд╛рдЪрдХрд╛рдВрд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рдард░рд▓рд╛ рдЖрд╣реЗ. рдЖрдкрд▓реНрдпрд╛рдХрдбреЗ рдкреНрд░рд╢реНрди рдЕрд╕рд▓реНрдпрд╛рд╕, рддреНрдпрд╛рдВрдирд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ рд╡рд┐рдЪрд╛рд░рд╛. рдорд▓рд╛ рдЙрддреНрддрд░ рджреЗрдгреНрдпрд╛рд╕ рдЖрдирдВрдж рд╣реЛрдИрд▓ :) рддрд╕реЗрдЪ, "рд▓рд╛рдЗрдХ" рдкреЛрд╕реНрдЯ рдХрд░реВрди рд▓реЗрдЦрдХрд╛рд╕ рд╕реНрдкрд░реНрдзреЗрдд рд╕рдорд░реНрдерди рдХрд░рдгреНрдпрд╛рд╕ рд╡рд┐рд╕рд░реВ рдирдХрд╛. рдХрд┐рдВрд╡рд╛ рдЕрдЬреВрди рдЪрд╛рдВрдЧрд▓реЗ тАФ "рдкреНрд░реЗрдо рдХрд░рд╛" :) рддреБрдордЪреНрдпрд╛ рдЕрднреНрдпрд╛рд╕рд╛рдд рд╢реБрднреЗрдЪреНрдЫрд╛!
рдЯрд┐рдкреНрдкрдгреНрдпрд╛
  • рд▓реЛрдХрдкреНрд░рд┐рдп
  • рдирд╡реАрди
  • рдЬреБрдиреЗ
рдЯрд┐рдкреНрдкрдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рд╕рд╛рдИрди рдЗрди рдХреЗрд▓реЗрд▓реЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ
рдпрд╛ рдкрд╛рдирд╛рд╡рд░ рдЕрдЬреВрди рдХреЛрдгрддреНрдпрд╛рд╣реА рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдирд╛рд╣реАрдд