рдкреНрд░рдердо рд╕рддреНрдп, рдХрд┐рдВрд╡рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдиреЗрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╕рд┐рд╕реНрдЯрдордЪреА рд░рдЪрдирд╛ рдХрд╛ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ

рдЕрд╣реЛ рд╣рд╛рдмреНрд░!

рдЖрдореНрд╣реА рд╡рд┐рд╖рдп рдПрдХреНрд╕рдкреНрд▓реЛрд░ рдХрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡рддреЛ рдЬрд╛рд╡рд╛ ╨╕ рд╡рд╕рдВрдд рдЛрддреВрдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрддрд░рд╛рд╡рд░ рд╕рдорд╛рд╡реЗрд╢. рдЖрдЬ рдЖрдореНрд╣реА рдореЛрдареНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреА рд░рдЪрдирд╛ рдХрд░рддрд╛рдирд╛, рдбреЗрдЯрд╛рдмреЗрд╕рдЪреА рд░рдЪрдирд╛ рдХрд╛ рдЖрд╣реЗ, рдЬрд╛рд╡рд╛ рдХреЛрдб рдирд╛рд╣реА, рд╣реЗ рдирд┐рд░реНрдгрд╛рдпрдХ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдХрд╛ рдЕрд╕рд╛рд╡реЗ, рд╣реЗ рдХрд╕реЗ рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдпрд╛ рдирд┐рдпрдорд╛рд▓рд╛ рдХреЛрдгрддреЗ рдЕрдкрд╡рд╛рдж рдЖрд╣реЗрдд рдпрд╛рдмрджреНрджрд▓ рд╡рд╛рдЪрдгреНрдпрд╛рдЪреА рдСрдлрд░ рджрд┐рд▓реА рдЖрд╣реЗ.

рдпрд╛ рдРрд╡рдЬреА рдЙрд╢реАрд░ рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рд▓реЗрдЦрд╛рдд, рдореА рд╕рдордЬрд╛рд╡реВрди рд╕рд╛рдВрдЧреЗрди рдХреА рдЬрд╡рд│рдЬрд╡рд│ рд╕рд░реНрд╡ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рддреАрд▓ рдбреЗрдЯрд╛ рдореЙрдбреЗрд▓ "рдЬрд╛рд╡рд╛рдЪреНрдпрд╛ рдХреНрд╖рдорддрд╛рдВрд╡рд░реВрди" (рдХрд┐рдВрд╡рд╛ рдЖрдкрдг рдХреЛрдгрддреАрд╣реА рдХреНрд▓рд╛рдпрдВрдЯ рднрд╛рд╖рд╛) рдРрд╡рдЬреА "рдбреЗрдЯрд╛рдмреЗрд╕рдордзреВрди" рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдЕрд╕реЗ рдорд▓рд╛ рдХрд╛ рд╡рд╛рдЯрддреЗ. рд╕рд╣ рдХрд╛рдо рдХрд░рдгреЗ). рджреБрд╕рд░рд╛ рджреГрд╖реНрдЯреАрдХреЛрди рдирд┐рд╡рдбреВрди, рддреБрдордЪрд╛ рдкреНрд░рдХрд▓реНрдк рд╡рд╛рдвреВ рд▓рд╛рдЧрд▓реНрдпрд╛рд╡рд░ рддреБрдореНрд╣реА рд╡реЗрджрдирд╛ рдЖрдгрд┐ рджреБрдГрдЦрд╛рдЪреНрдпрд╛ рджреАрд░реНрдШ рдорд╛рд░реНрдЧрд╛рд╡рд░ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛.

рддреНрдпрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд▓реЗрдЦ рд▓рд┐рд╣рд┐рд▓рд╛ рд╣реЛрддрд╛ рдПрдХ рдкреНрд░рд╢реНрди, рд╕реНрдЯреЕрдХ рдУрд╡реНрд╣рд░рдлреНрд▓реЛ рд╡рд░ рджрд┐рд▓реЗ.

рд╡рд┐рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ reddit рд╡рд░ рдордиреЛрд░рдВрдЬрдХ рдЪрд░реНрдЪрд╛ /r/java ╨╕ /r/рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ.

рдХреЛрдб рдирд┐рд░реНрдорд┐рддреА

рдорд▓рд╛ рдХрд┐рддреА рдЖрд╢реНрдЪрд░реНрдп рд╡рд╛рдЯрддреЗ рдХреА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪрд╛ рдЕрд╕рд╛ рдПрдХ рдЫреЛрдЯрд╛ рдерд░ рдЖрд╣реЗ рдЬреЛ jOOQ рд╢реА рдкрд░рд┐рдЪрд┐рдд рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░, jOOQ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рд╕реЛрд░реНрд╕ рдХреЛрдб рдЬрдирд░реЗрд╢рдирд╡рд░ рдЧрдВрднреАрд░рдкрдгреЗ рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрд╡рд░ рдирд╛рд░рд╛рдЬ рдЖрд╣реЗ. рддреБрдореНрд╣рд╛рд▓рд╛ рдпреЛрдЧреНрдп рд╡рд╛рдЯреЗрд▓ рддрд╕реЗ jOOQ рд╡рд╛рдкрд░рдгреНрдпрд╛рдкрд╛рд╕реВрди рдХреЛрдгреАрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ рд░реЛрдЦрдд рдирд╛рд╣реА рдЖрдгрд┐ рдХреЛрдгреАрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЛрдб рдЬрдирд░реЗрд╢рди рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рднрд╛рдЧ рдкрд╛рдбрдд рдирд╛рд╣реА. рдкрдг рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ (рдореЕрдиреНрдпреБрдЕрд▓рдордзреНрдпреЗ рд╡рд░реНрдгрди рдХреЗрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ), jOOQ рдЕрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ: рддреБрдореНрд╣реА (рд╡рд╛рд░рд╕рд╛) рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛рдиреЗ рд╕реБрд░реБрд╡рд╛рдд рдХрд░рд╛, рддреБрдордЪреНрдпрд╛ рдЯреЗрдмрд▓реНрд╕рдЪреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдгрд╛рд▒реНрдпрд╛ рд╡рд░реНрдЧрд╛рдВрдЪрд╛ рд╕рдВрдЪ рдорд┐рд│рд╡рдгреНрдпрд╛рд╕рд╛рдареА рддреНрдпрд╛рд▓рд╛ jOOQ рдХреЛрдб рдЬрдирд░реЗрдЯрд░рд╕рд╣ рд░рд┐рд╡реНрд╣рд░реНрд╕ рдЗрдВрдЬрд┐рдирд┐рдпрд░ рдХрд░рд╛ рдЖрдгрд┐ рдирдВрддрд░ рдЯрд╛рдЗрдк рдХрд░рд╛- рдпрд╛ рд╕рд╛рд░рдгреНрдпрд╛рдВрд╡рд┐рд░реВрджреНрдз рд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░рд╢реНрди:

	for (Record2<String, String> record : DSL.using(configuration)
//   ^^^^^^^^^^^^^^^^^^^^^^^ ╨Ш╨╜╤Д╨╛╤А╨╝╨░╤Ж╨╕╤П ╨╛ ╤В╨╕╨┐╨░╤Е ╨▓╤Л╨▓╨╡╨┤╨╡╨╜╨░ ╨╜╨░ 
//   ╨╛╤Б╨╜╨╛╨▓╨░╨╜╨╕╨╕ ╤Б╨│╨╡╨╜╨╡╤А╨╕╤А╨╛╨▓╨░╨╜╨╜╨╛╨│╨╛ ╨║╨╛╨┤╨░, ╨╜╨░ ╨║╨╛╤В╨╛╤А╤Л╨╣ ╤Б╤Б╤Л╨╗╨░╨╡╤В╤Б╤П ╨┐╤А╨╕╨▓╨╡╨┤╨╡╨╜╨╜╨╛╨╡
// ╨╜╨╕╨╢╨╡ ╤Г╤Б╨╗╨╛╨▓╨╕╨╡ SELECT 
 
       .select(ACTOR.FIRST_NAME, ACTOR.LAST_NAME)
//           vvvvv ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^ ╤Б╨│╨╡╨╜╨╡╤А╨╕╤А╨╛╨▓╨░╨╜╨╜╤Л╨╡ ╨╕╨╝╨╡╨╜╨░
       .from(ACTOR)
       .orderBy(1, 2)) {
    // ...
}

рдХреЛрдб рдмрд┐рд▓реНрдбрдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рдореЕрдиреНрдпреБрдЕрд▓реА рдХрд┐рдВрд╡рд╛ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рд▓реНрдбрд╡рд░ рдореЕрдиреНрдпреБрдЕрд▓реА рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЕрд╢рд╛ рдкреБрдирд░реБрддреНрдкрд╛рджрдирд╛рдирдВрддрд░ рд▓рдЧреЗрдЪ рдпреЗрдК рд╢рдХрддреЗ рдлреНрд▓рд╛рдпрд╡реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдерд▓рд╛рдВрддрд░, рдЬреЗ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдХрд┐рдВрд╡рд╛ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рддрдкрдгреЗ рджреЗрдЦреАрд▓ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рд╕реНрддреНрд░реЛрдд рдХреЛрдб рдирд┐рд░реНрдорд┐рддреА

рдХреЛрдб рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдпрд╛ рдкрджреНрдзрддреАрдВрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╡рд┐рдз рддрддреНрддреНрд╡рдЬреНрдЮрд╛рди, рдлрд╛рдпрджреЗ рдЖрдгрд┐ рддреЛрдЯреЗ рдЖрд╣реЗрдд - рдореЕрдиреНрдпреБрдЕрд▓ рдЖрдгрд┐ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд - рдЬреНрдпрд╛рдЪреА рдореА рдпрд╛ рд▓реЗрдЦрд╛рдд рддрдкрд╢реАрд▓рд╡рд╛рд░ рдЪрд░реНрдЪрд╛ рдХрд░рдгрд╛рд░ рдирд╛рд╣реА. рдкрд░рдВрддреБ, рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЛрдбрдЪрд╛ рд╕рдВрдкреВрд░реНрдг рдореБрджреНрджрд╛ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рддреЗ рддреБрдореНрд╣рд╛рд▓рд╛ Java рдордзреНрдпреЗ "рд╕рддреНрдп" рдкреБрдирд░реБрддреНрдкрд╛рджрд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ рдЬреЗ рдЖрдореНрд╣реА рдЧреГрд╣реАрдд рдзрд░рддреЛ, рдПрдХрддрд░ рдЖрдордЪреНрдпрд╛ рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░. рдПрдХрд╛ рдЕрд░реНрдерд╛рдиреЗ, рд╕реНрддреНрд░реЛрдд рдХреЛрдбрдордзреВрди рдмрд╛рдЗрдЯрдХреЛрдб, рдорд╢реАрди рдХреЛрдб рдХрд┐рдВрд╡рд╛ рдЗрддрд░ рдХрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреЗ рдХреЛрдб рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгрд╛рд░реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реЗрдЪ рдХрд╛рдо рдХрд░рддрд╛рдд - рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░рдгрд╛рдВрдЪреА рдкрд░реНрд╡рд╛ рди рдХрд░рддрд╛, рдЖрдореНрд╣рд╛рд▓рд╛ рджреБрд╕рд░реНтАНрдпрд╛ рднрд╛рд╖реЗрдд рдЖрдордЪреНрдпрд╛ "рд╕рддреНрдп" рдЪреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдорд┐рд│рддреЗ.

рдЕрд╕реЗ рдЕрдиреЗрдХ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдЖрд╣реЗрдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, XJC XSD рдХрд┐рдВрд╡рд╛ WSDL рдлрд╛рдпрд▓реАрдВрд╡рд░ рдЖрдзрд╛рд░рд┐рдд Java рдХреЛрдб рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░реВ рд╢рдХрддреЗ. рддрддреНрддреНрд╡ рдиреЗрд╣рдореА рд╕рдорд╛рди рдЕрд╕рддреЗ:

  • рдХрд╛рд╣реА рд╕рддреНрдп (рдЕрдВрддрд░реНрдЧрдд рдХрд┐рдВрд╡рд╛ рдмрд╛рд╣реНрдп) рдЖрд╣реЗ - рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдПрдХ рддрдкрд╢реАрд▓, рдбреЗрдЯрд╛ рдореЙрдбреЗрд▓ рдЗ.
  • рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖реЗрдд рдпрд╛ рд╕рддреНрдпрд╛рдЪреЗ рд╕реНрдерд╛рдирд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рд╢рд┐рд╡рд╛рдп, рд░рд┐рдбрдВрдбрдВрд╕реА рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА - рдЕрд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреЗ рдЬрд╡рд│рдЬрд╡рд│ рдиреЗрд╣рдореАрдЪ рдЙрдЪрд┐рдд рдЕрд╕рддреЗ.

рдкреНрд░рдХрд╛рд░ рдкреНрд░рджрд╛рддрд╛ рдЖрдгрд┐ рднрд╛рд╖реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛

рдЯреАрдк: jOOQ рд╕рд╛рдареА рдХреЛрдб рдирд┐рд░реНрдорд┐рддреАрд╕рд╛рдареА рдЖрдгрдЦреА рдПрдХ, рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рдЖрдгрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреГрд╖реНрдЯреАрдХреЛрди рдкреНрд░рдХрд╛рд░ рдкреНрд░рджрд╛рддреНрдпрд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ, рдЬрд╕реЗ рддреЗ F# рдордзреНрдпреЗ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЖрд╣реЗрдд. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдХреЛрдб рдХрдВрдкрд╛рдЗрд▓рд░рджреНрд╡рд╛рд░реЗ рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рд╕рдВрдХрд▓рдирд╛рдЪреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░. рддрддреНрд╡рддрдГ, рдЕрд╕рд╛ рдХреЛрдб рд╕реНрддреНрд░реЛрдд рдХреЛрдбрдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдирд╛рд╣реА. Java рдордзреНрдпреЗ, рд╕рдорд╛рди рдЖрд╣реЗрдд, рдЬрд░реА рдореЛрд╣рдХ рдирд╕рд▓реА рддрд░реА рд╕рд╛рдзрдиреЗ - рд╣реЗ рднрд╛рд╖реНрдп рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд╣реЗрдд, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд▓реЙрдордмреЙрдХ.

рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрд░реНрдерд╛рдиреЗ, рдпреЗрдереЗ рдкрд╣рд┐рд▓реНрдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдкреНрд░рдорд╛рдгреЗрдЪ рдШрдбрддрд╛рдд, рд╡рдЧрд│рддрд╛:

  • рддреБрдореНрд╣рд╛рд▓рд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓рд╛ рдХреЛрдб рджрд┐рд╕рдд рдирд╛рд╣реА (рдХрджрд╛рдЪрд┐рдд рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреА рдПрдЦрд╛рджреНрдпрд╛рд▓рд╛ рдЗрддрдХреА рддрд┐рд░рд╕реНрдХрд░рдгреАрдп рд╡рд╛рдЯрдд рдирд╛рд╣реА?)
  • рдЖрдкрдг рд╣реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдХреА рдкреНрд░рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд, рдореНрд╣рдгрдЬреЗрдЪ "рд╕рддреНрдп" рдиреЗрд╣рдореА рдЙрдкрд▓рдмреНрдз рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд▓реЛрдореНрдмреЛрдХрдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рд╣реЗ рд╕реЛрдкреЗ рдЖрд╣реЗ, рдЬреЗ "рд╕рддреНрдп" рднрд╛рд╖реНрдп рдХрд░рддреЗ. рдиреЗрд╣рдореА рдЙрдкрд▓рдмреНрдз рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдереЗрдЯ рдХрдиреЗрдХреНрд╢рдирд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбреЗрд▓реНрд╕рд╕рд╣ рд╣реЗ рдереЛрдбреЗ рдЕрдзрд┐рдХ рдХрдареАрдг рдЖрд╣реЗ.

рдХреЛрдб рдЬрдирд░реЗрд╢рдирдордзреНрдпреЗ рдХрд╛рдп рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗ?

рд╕реНрд╡рд╣рд╕реНрддреЗ рдХрд┐рдВрд╡рд╛ рдЖрдкреЛрдЖрдк рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХрд╕реЗ рд╕реБрд░реВ рдХрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ рдпрд╛ рдЕрд╡рдШрдб рдкреНрд░рд╢реНрдирд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдорд▓рд╛ рд╣реЗ рдирдореВрдж рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдХреА рдЕрд╕реЗ рд▓реЛрдХ рдЖрд╣реЗрдд рдЬреЗ рдорд╛рдирддрд╛рдд рдХреА рдХреЛрдб рдирд┐рд░реНрдорд┐рддреАрдЪреА рдЕрдЬрд┐рдмрд╛рдд рдЧрд░рдЬ рдирд╛рд╣реА. рдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рдЪреЗ рдФрдЪрд┐рддреНрдп, рдЬреЗ рдорд▓рд╛ рдмрд░реНтАНрдпрд╛рдЪрджрд╛ рдЖрдврд│рд▓реЗ рдЖрд╣реЗ, рддреЗ рдореНрд╣рдгрдЬреЗ рдмрд┐рд▓реНрдб рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗрдЯ рдХрд░рдгреЗ рдХрдареАрдг рдЖрд╣реЗ. рд╣реЛрдп, рд╣реЗ рдЦрд░реЛрдЦрд░ рдХрдареАрдг рдЖрд╣реЗ. рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рдЦрд░реНрдЪ рдЖрд╣реЗрдд. рддреБрдореНрд╣реА рдиреБрдХрддреЗрдЪ рдПрдЦрд╛рджреНрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрддреНрдкрд╛рджрдирд╛рд╕рд╣ рд╕реБрд░реБрд╡рд╛рдд рдХрд░рдд рдЕрд╕рд╛рд▓ (рдордЧ рддреЗ jOOQ, рдХрд┐рдВрд╡рд╛ JAXB, рдХрд┐рдВрд╡рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЗ.), рд╡рд░реНрдХрдмреЗрдВрдЪ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡реЗрд│ рд▓рд╛рдЧрддреЛ рдЬреНрдпрд╛рдЪреЗ рдореВрд▓реНрдп рдорд┐рд│рд╡рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрд╡рддрдГ API рд╢рд┐рдХрдгреНрдпрд╛рдд рдЦрд░реНрдЪ рдХрд░рд╛рдпрдЪрд╛ рдЖрд╣реЗ. .

рдЬрдирд░реЗрдЯрд░рдЪреЗ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЦрд░реНрдЪ рдЦреВрдк рдЬрд╛рд╕реНрдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдХреЛрдб рдЬрдирд░реЗрдЯрд░рдЪреНрдпрд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╡рд░ рдПрдкреАрдЖрдпрдиреЗ рдЦрд░рд╛рдм рдХрд╛рдо рдХреЗрд▓реЗ (рдЖрдгрд┐ рднрд╡рд┐рд╖реНрдпрд╛рдд рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рддреНрдпрд╛рдд рд╕рд╛рдиреБрдХреВрд▓рд┐рдд рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рдЕрд╡рдШрдб рдЖрд╣реЗ). рдЕрд╢рд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА API рд╕рд╛рдареА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╕рд░реНрд╡реЛрдЪреНрдЪ рдкреНрд░рд╛рдзрд╛рдиреНрдп рдЕрд╕рд╛рд╡реА. рдкрдг рдХреЛрдб рдЬрдирд░реЗрд╢рди рд╡рд┐рд░реБрджреНрдз рддреЛ рдлрдХреНрдд рдПрдХ рдпреБрдХреНрддрд┐рд╡рд╛рдж рдЖрд╣реЗ. рдЕрдиреНрдпрдерд╛, рдЕрдВрддрд░реНрдЧрдд рдХрд┐рдВрд╡рд╛ рдмрд╛рд╣реНрдп рд╕рддреНрдпрд╛рдЪреЗ рд╕реНрдерд╛рдирд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреВрд░реНрдгрдкрдгреЗ рд╣рд╛рддрд╛рдиреЗ рд▓рд┐рд╣рд╛.

рд╣реЗ рд╕рд░реНрд╡ рдХрд░рд╛рдпрд▓рд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рд╡реЗрд│ рдирд╛рд╣реА, рдЕрд╕реЗ рдЕрдиреЗрдХрдЬрдг рдореНрд╣рдгрддреАрд▓. рддреЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реБрдкрд░ рдЙрддреНрдкрд╛рджрдирд╛рд╕рд╛рдареА рдЕрдВрддрд┐рдо рдореБрджрддреАрд╡рд░ рдЖрд╣реЗрдд. рдирдВрддрд░ рдХрдзреАрддрд░реА рдЖрдореНрд╣реА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрдиреНрд╡реНрд╣реЗрдпрд░рдирд╛ рдХрдВрдШреА рдХрд░реВ, рдЖрдореНрд╣рд╛рд▓рд╛ рд╡реЗрд│ рдорд┐рд│реЗрд▓. рдореА рддреНрдпрд╛рдВрдирд╛ рдЙрддреНрддрд░ рджреЗрдИрди:

рдкреНрд░рдердо рд╕рддреНрдп, рдХрд┐рдВрд╡рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдиреЗрд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╕рд┐рд╕реНрдЯрдордЪреА рд░рдЪрдирд╛ рдХрд╛ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ
рдореВрд│, рдЕреЕрд▓рди O'Rourke, рдкреНрд░реЗрдХреНрд╖рдХ рд╕реНрдЯреЕрдХ

рдкрд░рдВрддреБ рд╣рд╛рдпрдмрд░рдиреЗрдЯ/рдЬреЗрдкреАрдПрдордзреНрдпреЗ "рдЬрд╛рд╡рд╛рдордзреНрдпреЗ" рдХреЛрдб рд▓рд┐рд╣рд┐рдгреЗ рдЗрддрдХреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ.

рдЦрд░рдВрдЪ. рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрд╕рд╛рдареА, рд╣реЗ рд╡рд░рджрд╛рди рдЖрдгрд┐ рд╢рд╛рдк рджреЛрдиреНрд╣реА рдЖрд╣реЗ. рд╣рд╛рдпрдмрд░рдиреЗрдЯрдордзреНрдпреЗ, рддреБрдореНрд╣реА рдлрдХреНрдд рджреЛрди рд╕рдВрд╕реНрдерд╛ рд▓рд┐рд╣реВ рд╢рдХрддрд╛, рдЬрд╕реЗ рдХреА:

	@Entity
class Book {
  @Id
  int id;
  String title;
}

рдЖрдгрд┐ рдЬрд╡рд│рдЬрд╡рд│ рд╕рд░реНрд╡ рдХрд╛рд╣реА рддрдпрд╛рд░ рдЖрд╣реЗ. рдЖрддрд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯрдЪрд╛ рднрд╛рдЧ рддреБрдордЪреНрдпрд╛ SQL рдЪреНрдпрд╛ "рдмреЛрд▓реА" рдЪреНрдпрд╛ DDL рдордзреНрдпреЗ рдпрд╛ рдШрдЯрдХрд╛рдЪреА рдиреЗрдордХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд╢реА рдХреЗрд▓реА рдЬрд╛рдИрд▓ рдпрд╛рдЪреЗ рдЬрдЯрд┐рд▓ "рддрдкрд╢реАрд▓" рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╣реЗ:

	CREATE TABLE book (
  id INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
  title VARCHAR(50),
 
  CONSTRAINT pk_book PRIMARY KEY (id)
);
 
CREATE INDEX i_book_title ON book (title);

... рдЖрдгрд┐ рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд╛рд▓рд╡рдгреЗ рд╕реБрд░реВ рдХрд░рд╛. рддреНрд╡рд░реАрдд рдЙрдареВрди рдзрд╛рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рднрд┐рдиреНрди рдЧреЛрд╖реНрдЯреА рд╡рд╛рдкрд░реВрди рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рдЦрд░реЛрдЦрд░ рдЫрд╛рди рд╡реИрд╢рд┐рд╖реНрдЯреНрдп.

рддрдерд╛рдкрд┐, рдорд▓рд╛ рджреНрдпрд╛. рдореА рдЦреЛрдЯрдВ рдмреЛрд▓рдд рд╣реЛрддреЛ.

  • рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдпрд╛ рдирд╛рд╡рд╛рдЪреНрдпрд╛ рдкреНрд░рд╛рдердорд┐рдХ рдХреАрдЪреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рд▓рд╛рдЧреВ рдХрд░реЗрд▓ рдХрд╛?
  • рд╣рд╛рдпрдмрд░рдиреЗрдЯ TITLE рд╡рд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рддрдпрд╛рд░ рдХрд░реЗрд▓? рдорд▓рд╛ рдЦрд╛рддреНрд░реА рдЖрд╣реЗ рдХреА рдЖрдореНрд╣рд╛рд▓рд╛ рдпрд╛рдЪреА рдЧрд░рдЬ рдЖрд╣реЗ.
  • рд╣рд╛рдпрдмрд░рдиреЗрдЯ рд╣реА рдХреА рдЖрдпрдбреЗрдВрдЯрд┐рдЯреА рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдордзреНрдпреЗ рдУрд│рдЦ рдХреА рдмрдирд╡реЗрд▓?

рдХрджрд╛рдЪрд┐рдд рдирд╛рд╣реА. рдЬрд░ рддреБрдореНрд╣реА рддреБрдордЪрд╛ рдкреНрд░рдХрд▓реНрдк рд╕реБрд░рд╡рд╛рддреАрдкрд╛рд╕реВрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдд рдЕрд╕рд╛рд▓, рддрд░ рдЬреБрдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдЯрд╛рдХреВрди рджреЗрдгреЗ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХ рднрд╛рд╖реНрдпреЗ рдЬреЛрдбрддрд╛рдЪ рдирд╡реАрди рддрдпрд╛рд░ рдХрд░рдгреЗ рдиреЗрд╣рдореАрдЪ рд╕реЛрдпреАрдЪреЗ рдЕрд╕рддреЗ. рддрд░, рдкреБрд╕реНрддрдХ рд╕рдВрд╕реНрдерд╛ рдЕрдЦреЗрд░реАрд╕ рдлреЙрд░реНрдо рдШреЗрдИрд▓:

	@Entity
@Table(name = "book", indexes = {
  @Index(name = "i_book_title", columnList = "title")
})
class Book {
  @Id
  @GeneratedValue(strategy = IDENTITY)
  int id;
  String title;
}

рдорд╕реНрдд. рдкреБрдиреНрд╣рд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рд╛. рдкреБрдиреНрд╣рд╛, рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рд╣реЗ рдЦреВрдк рд╕реЛрдкреЗ рд╣реЛрдИрд▓.

рдкрдг рддреБрдореНрд╣рд╛рд▓рд╛ рдирдВрддрд░ рддреНрдпрд╛рдЪреА рдХрд┐рдВрдордд рдореЛрдЬрд╛рд╡реА рд▓рд╛рдЧреЗрд▓.

рд▓рд╡рдХрд░рдЪ рдХрд┐рдВрд╡рд╛ рдирдВрддрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдЙрддреНрдкрд╛рджрдирд╛рдд рдЬрд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓. рддреЗрд╡реНрд╣рд╛ рдореЙрдбреЗрд▓ рдХрд╛рдо рдХрд░рдгреЗ рдерд╛рдВрдмрд╡рддреЗ. рдХрд╛рд░рдг:

рдЙрддреНрдкрд╛рджрдирд╛рдордзреНрдпреЗ, рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕, рдЬреБрдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдЯрд╛рдХреВрди рджреЗрдгреЗ рдЖрдгрд┐ рд╕рд░реНрд╡рдХрд╛рд╣реА рд╕реБрд░рд╡рд╛рддреАрдкрд╛рд╕реВрди рд╕реБрд░реВ рдХрд░рдгреЗ рдпрд╛рдкреБрдвреЗ рд╢рдХреНрдп рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА. рддреБрдордЪрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рд░рд╕рд╛ рдордзреНрдпреЗ рдмрджрд▓реЗрд▓.

рдЖрддрд╛рдкрд╛рд╕реВрди рдЖрдгрд┐ рдХрд╛рдпрдордЪреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд▓рд┐рд╣рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ DDL рд╕реНрдерд▓рд╛рдВрддрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЙрджрд╛. Flyway рд╡рд╛рдкрд░рдгреЗ. рдЖрдгрд┐ рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдЖрдкрд▓реНрдпрд╛ рд╕рдВрд╕реНрдерд╛рдВрдЪреЗ рдХрд╛рдп рд╣реЛрдИрд▓? рддреБрдореНрд╣реА рдПрдХрддрд░ рддреНрдпрд╛рдВрдирд╛ рдореЕрдиреНрдпреБрдЕрд▓реА рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛ (рдЖрдгрд┐ рддреБрдордЪрд╛ рдХрд╛рдорд╛рдЪрд╛ рднрд╛рд░ рджреБрдкреНрдкрдЯ рдХрд░реВ рд╢рдХрддрд╛) рдХрд┐рдВрд╡рд╛ рд╣рд╛рдпрдмрд░рдиреЗрдЯрдиреЗ рддреЗ рддреБрдордЪреНрдпрд╛рд╕рд╛рдареА рдкреБрдиреНрд╣рд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реВ рд╢рдХрддрд╛ (рддреБрдордЪреНрдпрд╛ рдЕрдкреЗрдХреНрд╖рд╛ рдкреВрд░реНрдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рд╣реЛрдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдХрд┐рддреА рдЖрд╣реЗ?) рддреБрдореНрд╣реА рджреЛрдиреНрд╣реА рдорд╛рд░реНрдЧ рдЧрдорд╛рд╡рд╛рд▓.

рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ, рддреБрдореНрд╣реА рдЙрддреНрдкрд╛рджрдирд╛рдд рдЬрд╛рддрд╛рдЪ, рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЙрдЯ рдкреЕрдЪрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓. рдЖрдгрд┐ рддреЗ рдлрд╛рд░ рд▓рд╡рдХрд░ рдЙрддреНрдкрд╛рджрдирд╛рдд рдЖрдгрд▓реЗ рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рддреБрдореНрд╣реА рдЙрддреНрдкрд╛рджрдирд╛рд╕рд╛рдареА рддреБрдордЪреНрдпрд╛ рд╕реНрдерд▓рд╛рдВрддрд░рд╛рдЪреА рдЧреБрд│рдЧреБрд│реАрдд рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд┐рдВрдЧ рддрдпрд╛рд░ рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХреЗрд▓реА рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ, рддреБрдореНрд╣реА рдмрд┐рдирдзрд╛рд╕реНрддрдкрдгреЗ рдкреЕрдЪрд┐рдВрдЧ рдХрд░рдд рдЖрд╣рд╛рдд. рдЖрдгрд┐ рдордЧ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рд╕рд░реНрд╡рдХрд╛рд╣реА рдмрд░реЛрдмрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡реЗрд│ рдирд╛рд╣реА. рдЖрдгрд┐ рдЖрдкрдг рд╣рд╛рдпрдмрд░рдиреЗрдЯрд▓рд╛ рдлрдЯрдХрд╛рд░рддреЛ, рдХрд╛рд░рдг рд╣реА рдиреЗрд╣рдореАрдЪ рдХреЛрдгрд╛рдЪреАрд╣реА рдЪреВрдХ рдЕрд╕рддреЗ, рдкрд░рдВрддреБ рддреБрдордЪреА рдирд╛рд╣реА ...

рддреНрдпрд╛рдРрд╡рдЬреА, рдЕрдЧрджреА рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрди, рд╕рд░реНрд╡рдХрд╛рд╣реА рдкреВрд░реНрдгрдкрдгреЗ рд╡реЗрдЧрд│реНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╕рд╛рдпрдХрд▓рд╡рд░ рдЧреЛрд▓ рдЪрд╛рдХреЗ рд▓рд╛рд╡рд╛.

рдкреНрд░рдердо рдбреЗрдЯрд╛рдмреЗрд╕

рддреБрдордЪреНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛рдордзреАрд▓ рдЦрд░реЗ "рд╕рддреНрдп" рдЖрдгрд┐ рддреНрдпрд╛рд╡рд░ "рд╕рд╛рд░реНрд╡рднреМрдорддреНрд╡" рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдЖрд╣реЗ. рд╕реНрдХреАрдорд╛ рдХреЗрд╡рд│ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗрдЪ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рдЗрддрд░ рдХреЛрдареЗрд╣реА рдирд╛рд╣реА, рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдпрдВрдЯрдХрдбреЗ рдпрд╛ рд╕реНрдХреАрдорд╛рдЪреА рдПрдХ рдкреНрд░рдд рдЖрд╣реЗ, рддреНрдпрд╛рдореБрд│реЗ рд╕реНрдХреАрдорд╛ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рдЕрдЦрдВрдбрддреЗрдЪреЗ рдкрд╛рд▓рди рдХрд░рдгреЗ, рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рддреЗ рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рдХрд░рдгреЗ рдпреЛрдЧреНрдп рдЖрд╣реЗ - рдЬреЗрдереЗ рдорд╛рд╣рд┐рддреА рд╕рд╛рдард╡рд▓реА рдЬрд╛рддреЗ.
рд╣реЗ рдЕрдЧрджреА рдЬреБрдиреЗ рд╢рд╣рд╛рдгрдкрдг рдЖрд╣реЗ. рдкреНрд░рд╛рдердорд┐рдХ рдЖрдгрд┐ рдЕрджреНрд╡рд┐рддреАрдп рдХреА рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рдЖрд╣реЗрдд. рдкрд░рджреЗрд╢реА рдХрд│рд╛ рдареАрдХ рдЖрд╣реЗрдд. рдкреНрд░рддрд┐рдмрдВрдз рддрдкрд╛рд╕рдгреА рдЪрд╛рдВрдЧрд▓реА рдЖрд╣реЗ. рдирд┐рд╡реЗрджрдиреЗ - рдареАрдХ рдЖрд╣реЗ.

рдЖрдгрд┐, рдПрд╡рдвреЗрдЪ рдирд╛рд╣реА. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдУрд░реЕрдХрд▓ рд╡рд╛рдкрд░реВрди, рдЖрдкрдг рдХрджрд╛рдЪрд┐рдд рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд╛рд▓:

  • рддреБрдордЪреЗ рдЯреЗрдмрд▓ рдХреЛрдгрддреНрдпрд╛ рдЯреЗрдмрд▓рд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдЖрд╣реЗ
  • рддрд┐рдЪреЗ PCTFREE рдореВрд▓реНрдп рдХрд╛рдп рдЖрд╣реЗ
  • рддреБрдордЪреНрдпрд╛ рдХреНрд░рдорд╛рддреАрд▓ рдХреЕрд╢реЗрдЪрд╛ рдЖрдХрд╛рд░ рдХрд┐рддреА рдЖрд╣реЗ (рдЖрдпрдбреАрдЪреНрдпрд╛ рдорд╛рдЧреЗ)

рдЫреЛрдЯреНрдпрд╛ рд╕рд┐рд╕реНрдЯреАрдордордзреНрдпреЗ рд╣реЗ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдлрд░рдХ рдкрдбрдд рдирд╛рд╣реА, рдкрд░рдВрддреБ "рдореЛрдареНрдпрд╛ рдбреЗрдЯрд╛" рдЪреНрдпрд╛ рдХреНрд╖реЗрддреНрд░рд╛рдордзреНрдпреЗ рд╕рдВрдХреНрд░рдордг рд╣реЛрдИрдкрд░реНрдпрдВрдд рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА - рдЖрдкрдг рд╡рд░ рдЙрд▓реНрд▓реЗрдЦ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡рд┐рдХреНрд░реЗрддреНрдпрд╛-рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реНрдЯреЛрд░реЗрдЬ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирдЪрд╛ рд▓рд╛рдн рдШреЗрдгреНрдпрд╛рд╕ рд╕реБрд░реБрд╡рд╛рдд рдХрд░реВ рд╢рдХрддрд╛, рдЬрд╕реЗ рдХреА рд╡рд░ рдирдореВрдж рдХреЗрд▓реЗ рдЖрд╣реЗ. рдореА рдкрд╛рд╣рд┐рд▓реЗрд▓реЗ рдХреЛрдгрддреЗрд╣реА ORM (jOOQ рд╕рд╣) рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рд╡рд╛рдкрд░реВ рдЗрдЪреНрдЫрд┐рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ DDL рдкрд░реНрдпрд╛рдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдкреВрд░реНрдг рд╕реЗрдЯрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рдд рдирд╛рд╣реАрдд. ORM рддреБрдореНрд╣рд╛рд▓рд╛ DDL рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕ рдорджрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд╣реА рд╕рд╛рдзрдиреЗ рджреЗрддрд╛рдд.

рдкрдг рджрд┐рд╡рд╕рд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА, DDL рдордзреНтАНрдпреЗ рд╕реБ-рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реА рд╕реНрдХреАрдорд╛ рд╣рд╛рддрд╛рдиреЗ рд▓рд┐рд╣рд┐рд▓реА рдЬрд╛рддреЗ. рдХреЛрдгрддреЗрд╣реА рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реЗ рдбреАрдбреАрдПрд▓ рд╣реЗ рдлрдХреНрдд рддреНрдпрд╛рдЪреЗ рдЕрдВрджрд╛рдЬреЗ рдЖрд╣реЗ.

рдХреНрд▓рд╛рдпрдВрдЯ рдореЙрдбреЗрд▓рдЪреЗ рдХрд╛рдп?

рд╡рд░ рдирдореВрдж рдХреЗрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рдХреНрд▓рд╛рдпрдВрдЯрд╡рд░ рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛рдЪреА, рдХреНрд▓рд╛рдпрдВрдЯ рд╡реНрд╣реНрдпреВрдЪреА рдкреНрд░рдд рдЖрд╡рд╢реНрдпрдХ рдЕрд╕реЗрд▓. рд╣реЗ рд╕рд╛рдВрдЧрдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА, рд╣реЗ рдХреНрд▓рд╛рдпрдВрдЯ рджреГрд╢реНрдп рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЙрдбреЗрд▓рд╕рд╣ рд╕рдордХреНрд░рдорд┐рдд рдЕрд╕рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. рд╣реЗ рд╕рд╛рдзреНрдп рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╕рд░реНрд╡реЛрддреНрддрдо рдорд╛рд░реНрдЧ рдХреЛрдгрддрд╛ рдЖрд╣реЗ? рдХреЛрдб рдЬрдирд░реЗрдЯрд░рд╕рд╣.

рд╕рд░реНрд╡ рдбреЗрдЯрд╛рдмреЗрд╕ SQL тАЛтАЛрджреНрд╡рд╛рд░реЗ рддреНрдпрд╛рдВрдЪреА рдореЗрдЯрд╛-рдорд╛рд╣рд┐рддреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдд. рддреБрдордЪреНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреВрди рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ SQL рдмреЛрд▓реАрдВрдордзреНрдпреЗ рд╕рд░реНрд╡ рдЯреЗрдмрд▓реНрд╕ рдХрд╕реЗ рдорд┐рд│рд╡рд╛рдпрдЪреЗ рддреЗ рдпреЗрдереЗ рдЖрд╣реЗ:

	-- H2, HSQLDB, MySQL, PostgreSQL, SQL Server
SELECT table_schema, table_name
FROM information_schema.tables
 
-- DB2
SELECT tabschema, tabname
FROM syscat.tables
 
-- Oracle
SELECT owner, table_name
FROM all_tables
 
-- SQLite
SELECT name
FROM sqlite_master
 
-- Teradata
SELECT databasename, tablename
FROM dbc.tables

рдпрд╛ рдХреНрд╡реЗрд░реА (рдХрд┐рдВрд╡рд╛ рддрддреНрд╕рдо, рддреБрдореНрд╣рд╛рд▓рд╛ рд╡реНрд╣реНрдпреВрдЬ, рдордЯреЗрд░рд┐рдЕрд▓рд╛рдЗрдЬреНрдб рд╡реНрд╣реНрдпреВрдЬ, рдЯреЗрдмрд▓-рд╡реНрд╣реЕрд▓реНрдпреБрдб рдлрдВрдХреНрд╢рдиреНрд╕рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рд╛рдпрдЪрд╛ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди) рдХреЙрд▓ рдХрд░реВрди рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд. DatabaseMetaData.getTables() JDBC рдХрдбреВрди, рдХрд┐рдВрд╡рд╛ jOOQ рдореЗрдЯрд╛-рдореЙрдбреНрдпреВрд▓ рд╡рд╛рдкрд░реВрди.

рдЕрд╢рд╛ рдкреНрд░рд╢реНрдирд╛рдВрдЪреНрдпрд╛ рдкрд░рд┐рдгрд╛рдорд╛рдВрдордзреВрди, рддреБрдордЪреНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбреЗрд▓рдЪреЗ рдХреЛрдгрддреЗрд╣реА рдХреНрд▓рд╛рдпрдВрдЯ-рд╕рд╛рдЗрдб рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреЗ рддреБрд▓рдиреЗрдиреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ, рддреБрдореНрд╣реА рдХреНрд▓рд╛рдпрдВрдЯрд╡рд░ рдХреЛрдгрддреЗрд╣реА рддрдВрддреНрд░рдЬреНрдЮрд╛рди рд╡рд╛рдкрд░рдд рдЕрд╕рд▓рд╛рдд рддрд░реА.

  • рддреБрдореНрд╣реА JDBC рдХрд┐рдВрд╡рд╛ Spring рд╡рд╛рдкрд░рдд рдЕрд╕рд╛рд▓ рддрд░ рддреБрдореНрд╣реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХрд╛рдВрдЪрд╛ рд╕рдВрдЪ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛
  • рдЬрд░ рддреБрдореНрд╣реА JPA рд╡рд╛рдкрд░рдд рдЕрд╕рд╛рд▓, рддрд░ рддреБрдореНрд╣реА рд╕реНрд╡рддрдГ рд╕рдВрд╕реНрдерд╛ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛
  • рддреБрдореНрд╣реА jOOQ рд╡рд╛рдкрд░рдд рдЕрд╕рд╛рд▓ рддрд░ рддреБрдореНрд╣реА jOOQ рдореЗрдЯрд╛ рдореЙрдбреЗрд▓ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛

рддреБрдордЪрд╛ рдХреНрд▓рд╛рдпрдВрдЯ API рдХрд┐рддреА рдкреЙрд╡рд░ рдСрдлрд░ рдХрд░рддреЛ (рдЙрджрд╛. jOOQ рдХрд┐рдВрд╡рд╛ JPA) рдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди, рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реЗ рдореЗрдЯрд╛ рдореЙрдбреЗрд▓ рдЦрд░реЛрдЦрд░ рд╕рдореГрджреНрдз рдЖрдгрд┐ рдкреВрд░реНрдг рдЕрд╕реВ рд╢рдХрддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рд╛рдореАрд▓ рд╣реЛрдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдШреНрдпрд╛, jOOQ 3.11 рдордзреНрдпреЗ рд╕рд╛рджрд░ рдХреЗрд▓реЗ, рдЬреЗ рддреБрдордЪреНрдпрд╛ рд╕рд╛рд░рдгреНрдпрд╛рдВрдордзреАрд▓ рдкрд░рджреЗрд╢реА рдХреА рд╕рдВрдмрдВрдзрд╛рдВрдмрджреНрджрд▓ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдореЗрдЯрд╛-рдорд╛рд╣рд┐рддреАрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддреЗ.

рдЖрддрд╛ рдХреЛрдгрддреАрд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рдв рдЖрдкреЛрдЖрдк рдХреНрд▓рд╛рдпрдВрдЯ рдХреЛрдб рдЕрдкрдбреЗрдЯ рдХрд░реЗрд▓. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рдХрд▓реНрдкрдирд╛ рдХрд░рд╛:

ALTER TABLE book RENAME COLUMN title TO book_title;

рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реА рдиреЛрдХрд░реА рджреЛрдирджрд╛ рдХрд░рд╛рдпрд▓рд╛ рдЖрд╡рдбреЗрд▓ рдХрд╛? рдХреЛрдгрддреНрдпрд╛рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреАрдд рдирд╛рд╣реА. рдЖрдореНрд╣реА рдлрдХреНрдд DDL рд╡рдЪрдирдмрджреНрдз рдХрд░рддреЛ, рддреЗ рддреБрдордЪреНрдпрд╛ рдмрд┐рд▓реНрдб рдкрд╛рдЗрдкрд▓рд╛рдЗрдирджреНрд╡рд╛рд░реЗ рдЪрд╛рд▓рд╡рддреЛ рдЖрдгрд┐ рдЕрдкрдбреЗрдЯ рдХреЗрд▓реЗрд▓реА рд╕рдВрд╕реНрдерд╛ рдорд┐рд│рд╡рддреЛ:

@Entity
@Table(name = "book", indexes = {
 
  // ╨Т╤Л ╨╛╨▒ ╤Н╤В╨╛╨╝ ╨╖╨░╨┤╤Г╨╝╤Л╨▓╨░╨╗╨╕╤Б╤М?
  @Index(name = "i_book_title", columnList = "book_title")
})
class Book {
  @Id
  @GeneratedValue(strategy = IDENTITY)
  int id;
 
  @Column("book_title")
  String bookTitle;
}

рдХрд┐рдВрд╡рд╛ рдЕрдкрдбреЗрдЯ рдХреЗрд▓реЗрд▓рд╛ jOOQ рд╡рд░реНрдЧ. рдбреАрдбреАрдПрд▓рдордзреАрд▓ рдмрд╣реБрддрд╛рдВрд╢ рдмрджрд▓ рдХреЗрд╡рд│ рд╡рд╛рдХреНрдпрд░рдЪрдирд╛рдЪ рдирд╡реНрд╣реЗ рддрд░ рд╢рдмреНрджрд╛рд░реНрдерд╛рдВрд╡рд░рд╣реА рдкрд░рд┐рдгрд╛рдо рдХрд░рддрд╛рдд. рддреНрдпрд╛рдореБрд│реЗ, рддреБрдордЪрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рдврд╡рд▓реНрдпрд╛рдиреЗ рдХреЛрдгрддрд╛ рдХреЛрдб рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдИрд▓ (рдХрд┐рдВрд╡рд╛ рд╣реЛрдК рд╢рдХрддреЛ) рд╣реЗ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЛрдбрдордзреНрдпреЗ рдкрд╛рд╣рдгреЗ рд╕реЛрдпреАрдЪреЗ рдЖрд╣реЗ.

рдПрдХрдореЗрд╡ рд╕рддреНрдп

рддреБрдореНрд╣реА рдХреЛрдгрддреЗ рддрдВрддреНрд░рдЬреНрдЮрд╛рди рд╡рд╛рдкрд░рддрд╛ рдпрд╛рдЪреА рдкрд░реНрд╡рд╛ рди рдХрд░рддрд╛, рдиреЗрд╣рдореАрдЪ рдПрдХ рдореЙрдбреЗрд▓ рдЕрд╕рддреЗ рдЬреЗ рдХрд╛рд╣реА рдЙрдкрдкреНрд░рдгрд╛рд▓реАрд╕рд╛рдареА рд╕рддреНрдпрд╛рдЪрд╛ рдПрдХрдореЗрд╡ рд╕реНрддреНрд░реЛрдд рдЕрд╕рддреЗ - рдХрд┐рдВрд╡рд╛ рдХрд┐рдорд╛рди рдЖрдкрдг рдпрд╛рд╕рд╛рдареА рдкреНрд░рдпрддреНрди рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдЖрдгрд┐ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЭ рдЧреЛрдВрдзрд│ рдЯрд╛рд│рд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ рдЬрд┐рдереЗ "рд╕рддреНрдп" рд╕рд░реНрд╡рддреНрд░ рдЖрдгрд┐ рдХреБрдареЗрд╣реА рдирд╛рд╣реА. рд╕рд░реНрд╡ рдХрд╛рд╣реА рдЦреВрдк рд╕реЛрдкреЗ рдЕрд╕реВ рд╢рдХрддреЗ. рддреБрдореНрд╣реА рдлрдХреНрдд XML рдлрд╛рдЗрд▓реНрд╕рдЪреА рджреЗрд╡рд╛рдгрдШреЗрд╡рд╛рдг рдЗрддрд░ рд╕рд┐рд╕реНрдЯреАрдорд╕рд╣ рдХрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдлрдХреНрдд XSD рд╡рд╛рдкрд░рд╛. XML рд╕реНрд╡рд░реВрдкрд╛рдд jOOQ рдЪреНрдпрд╛ INFORMATION_SCHEMA рдореЗрдЯрд╛-рдореЙрдбреЗрд▓рд╡рд░ рдПрдХ рдирдЬрд░ рдЯрд╛рдХрд╛:
https://www.jooq.org/xsd/jooq-meta-3.10.0.xsd

  • XSD рдЪрд╛рдВрдЧрд▓реЗ рд╕рдордЬрд▓реЗ рдЖрд╣реЗ
  • XSD XML рд╕рд╛рдордЧреНрд░реА рдЕрддрд┐рд╢рдп рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рд╕рд░реНрд╡ рдХреНрд▓рд╛рдпрдВрдЯ рднрд╛рд╖рд╛рдВрдордзреНрдпреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдгрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ
  • XSD рдЪрд╛рдВрдЧрд▓реА рдЖрд╡реГрддреНрддреА рдЖрд╣реЗ рдЖрдгрд┐ рдЕрддреНрдпрдВрдд рдорд╛рдЧрд╛рд╕ рд╕реБрд╕рдВрдЧрдд рдЖрд╣реЗ
  • XSD рдЪреЗ XJC рд╡рд╛рдкрд░реВрди Java рдХреЛрдбрдордзреНрдпреЗ рднрд╛рд╖рд╛рдВрддрд░ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ

рд╢реЗрд╡рдЯрдЪрд╛ рдореБрджреНрджрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рдЖрд╣реЗ. XML рд╕рдВрджреЗрд╢ рд╡рд╛рдкрд░реВрди рдмрд╛рд╣реНрдп рдкреНрд░рдгрд╛рд▓реАрд╢реА рд╕рдВрдкреНрд░реЗрд╖рдг рдХрд░рддрд╛рдирд╛, рдЖрдордЪреЗ рд╕рдВрджреЗрд╢ рд╡реИрдз рдЖрд╣реЗрдд рдпрд╛рдЪреА рдЖрдореНрд╣реА рдЦрд╛рддреНрд░реА рдХрд░реВ рдЗрдЪреНрдЫрд┐рддреЛ. JAXB, XJC рдЖрдгрд┐ XSD рд╕рд╣ рд╣реЗ рд╕рд╛рдзреНрдп рдХрд░рдгреЗ рдЦреВрдк рд╕реЛрдкреЗ рдЖрд╣реЗ. рдЬрд╛рд╡рд╛-рдлрд░реНрд╕реНрдЯ рдбрд┐рдЭрд╛рдИрди рдкрдзреНрджрддреАрдд рдЬрд┐рдереЗ рдЖрдкрдг рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореНрд╣рдгреВрди рдЖрдкрд▓реЗ рд╕рдВрджреЗрд╢ рдмрдирд╡рддреЛ, рддреЗ XML рд▓рд╛ рд╕реБрдЧрдордкрдгреЗ рд░реЗрдВрдбрд░ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдЖрдгрд┐ рджреБрд╕рд░реНтАНрдпрд╛ рд╕рд┐рд╕реНрдЯрдорд▓рд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкрд╛рдард╡рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдЕрд╕рд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рдгреЗ рдирд┐рд╡реНрд╡рд│ рд╡реЗрдбреЗрдкрдгрд╛рдЪреЗ рдард░реЗрд▓. рдЕрд╢рд╛рдкреНрд░рдХрд╛рд░реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реЗ XML рдЕрддреНрдпрдВрдд рдирд┐рдХреГрд╖реНрдЯ рджрд░реНрдЬрд╛рдЪреЗ, рдХрд╛рдЧрджреЛрдкрддреНрд░реА рдирд╕рд▓реЗрд▓реЗ рдЖрдгрд┐ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреЗ рдХрдареАрдг рдЕрд╕реЗрд▓. рдЕрд╢рд╛ рдЗрдВрдЯрд░рдлреЗрд╕рд╡рд░ рд╕реЗрд╡рд╛ рдЧреБрдгрд╡рддреНрддреЗрдЪреНрдпрд╛ (рдПрд╕рдПрд▓рдП) рд╕реНрддрд░рд╛рд╡рд░ рдХрд░рд╛рд░ рдЕрд╕рд▓реНрдпрд╛рд╕, рдЖрдореНрд╣реА рддреЗ рддреНрд╡рд░рд┐рдд рдЦрд░рд╛рдм рдХрд░реВ.

рдЦрд░реЗ рд╕рд╛рдВрдЧрд╛рдпрдЪреЗ рддрд░, рдЬреЗрдПрд╕рдУрдПрди рдПрдкреАрдЖрдп рд╕рд╣ рдиреЗрд╣рдореАрдЪ рдЕрд╕реЗрдЪ рдШрдбрддреЗ, рдкрд░рдВрддреБ рддреА рджреБрд╕рд░реА рдХрдерд╛ рдЖрд╣реЗ, рдореА рдкреБрдврдЪреНрдпрд╛ рд╡реЗрд│реА рд╡рд╛рдж рдШрд╛рд▓реЗрди ...

рдбреЗрдЯрд╛рдмреЗрд╕: рддреЗ рд╕рдорд╛рди рдЖрд╣реЗрдд

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

рдЬреЗрд╡реНрд╣рд╛ рд╕реНрддреНрд░реЛрдд рдЕрджреНрдпрддрди рд╣реЛрддреЗ, рддреЗрд╡реНрд╣рд╛ рд╕рд░реНрд╡ рдХреНрд▓рд╛рдпрдВрдЯрдиреЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдореЙрдбреЗрд▓рдЪреНрдпрд╛ рдкреНрд░рддреА рджреЗрдЦреАрд▓ рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реНрдпрд╛ рдкрд╛рд╣рд┐рдЬреЗрдд. рдХрд╛рд╣реА рдХреНрд▓рд╛рдпрдВрдЯ jOOQ рдЖрдгрд┐ рд╣рд╛рдпрдмрд░рдиреЗрдЯ рдХрд┐рдВрд╡рд╛ JDBC (рдХрд┐рдВрд╡рд╛ рджреЛрдиреНрд╣реА) рд╡рд╛рдкрд░реВрди Java рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рдЗрддрд░ рдХреНрд▓рд╛рдпрдВрдЯ рдкрд░реНрд▓рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд (рддреНрдпрд╛рдВрдирд╛ рд╢реБрднреЗрдЪреНрдЫрд╛ рджреЗрдКрдпрд╛), рдЗрддрд░ C# рдордзреНрдпреЗ. рдХрд╛рд╣реА рдлрд░рдХ рдкрдбрдд рдирд╛рд╣реА. рдореБрдЦреНрдп рдореЙрдбреЗрд▓ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдЖрд╣реЗ. ORM-рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реЗ рдореЙрдбреЗрд▓ рд╕рд╛рдорд╛рдиреНрдпрдд: рдЦрд░рд╛рдм рджрд░реНрдЬрд╛рдЪреЗ, рдЦрд░рд╛рдм рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдХреЗрд▓реЗрд▓реЗ рдЖрдгрд┐ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреЗ рдХрдареАрдг рдЕрд╕рддреЗ.

рддреНрдпрд╛рдореБрд│реЗ рдЪреБрдХрд╛ рдХрд░реВ рдирдХрд╛. рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрдирдЪ рдЪреБрдХрд╛ рдХрд░реВ рдирдХрд╛. рдбреЗрдЯрд╛рдмреЗрд╕рдордзреВрди рдХрд╛рд░реНрдп рдХрд░рд╛. рдПрдХ рдЙрдкрдпреЛрдЬрди рдкрд╛рдЗрдкрд▓рд╛рдЗрди рддрдпрд╛рд░ рдХрд░рд╛ рдЬреА рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЕрд╕реВ рд╢рдХрддреЗ. рддреБрдордЪрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбреЗрд▓ рд╕реЛрдпреАрд╕реНрдХрд░рдкрдгреЗ рдХреЙрдкреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдХреНрд▓рд╛рдпрдВрдЯрд╡рд░ рдбрдВрдк рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рд╕рдХреНрд╖рдо рдХрд░рд╛. рдЖрдгрд┐ рдХреЛрдб рдЬрдирд░реЗрдЯрд░рдмрджреНрджрд▓ рдХрд╛рд│рдЬреА рдХрд░рдгреЗ рдерд╛рдВрдмрд╡рд╛. рддреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ. рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╕рд╣, рдЖрдкрдг рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ рд╡реНрд╣рд╛рд▓. рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрдирдЪ рддреНрдпрд╛рдВрдирд╛ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдд рдереЛрдбрд╛ рд╡реЗрд│ рдШрд╛рд▓рд╡рд╛рдпрдЪрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреБрдордЪреНрдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯрдЪреА рдХрдерд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЕрдиреЗрдХ рд╡рд░реНрд╖реЗ рд╕реБрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдЕрд╕реЗрд▓.

рдирдВрддрд░ рдорд╛рдЭреЗ рдЖрднрд╛рд░ рдорд╛рдиреВ рдирдХрд╛.

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА: рд╣рд╛ рд▓реЗрдЦ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкреНрд░рдХрд╛рд░реЗ рд╕рдВрдкреВрд░реНрдг рдкреНрд░рдгрд╛рд▓реА (рдореНрд╣рдгрдЬреЗ рдбреЛрдореЗрди, рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХ, рдЗ. рдЗ.) рдЖрдкрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбреЗрд▓рдордзреНрдпреЗ рдмрд╕рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдХрд╡рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рд╕рдорд░реНрдерди рдХрд░рдд рдирд╛рд╣реА. рдореА рдпрд╛ рд▓реЗрдЦрд╛рдд рдЬреНрдпрд╛рдмрджреНрджрд▓ рдмреЛрд▓рдд рдЖрд╣реЗ рддреЗ рдореНрд╣рдгрдЬреЗ рдбреЗрдЯрд╛рдмреЗрд╕рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгрд╛рд░рд╛ рдХреНрд▓рд╛рдпрдВрдЯ рдХреЛрдб рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбреЗрд▓рдЪреНрдпрд╛ рдЖрдзрд╛рд░рд╛рд╡рд░ рдХрд╛рд░реНрдп рдХрд░рддреЛ рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбреЗрд▓рд▓рд╛ "рдкреНрд░рдердо рд╢реНрд░реЗрдгреА" рд╕реНрдерд┐рддреАрдд рдкреБрдирд░реБрддреНрдкрд╛рджрд┐рдд рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА. рдЕрд╕реЗ рд▓реЙрдЬрд┐рдХ рд╕рд╣рд╕рд╛ рддреБрдордЪреНрдпрд╛ рдХреНрд▓рд╛рдпрдВрдЯрд╡рд░реАрд▓ рдбреЗрдЯрд╛ рдНрдХреНрд╕реЗрд╕ рд▓реЗрдпрд░рдордзреНрдпреЗ рдЕрд╕рддреЗ.

рджреЛрди-рд╕реНрддрд░реАрдп рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рдордзреНрдпреЗ, рдЬреЗ рдЕрдЬреВрдирд╣реА рдХрд╛рд╣реА рдард┐рдХрд╛рдгреА рд╕рдВрд░рдХреНрд╖рд┐рдд рдЖрд╣реЗрдд, рдЕрд╢рд╛ рдкреНрд░рдгрд╛рд▓реАрдЪреЗ рдореЙрдбреЗрд▓ рдПрдХрдореЗрд╡ рд╢рдХреНрдп рдЖрд╣реЗ. рддрдерд╛рдкрд┐, рдмрд░реНтАНрдпрд╛рдЪ рдкреНрд░рдгрд╛рд▓реАрдВрдордзреНрдпреЗ, рдбреЗрдЯрд╛ рдНрдХреНрд╕реЗрд╕ рд▓реЗрдпрд░ рдорд▓рд╛ "рд╕рдмрд╕рд┐рд╕реНрдЯрдо" рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рджрд┐рд╕рддреЗ рдЬреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбреЗрд▓рдЪреЗ рдЕрдВрддрд░реНрднреВрдд рдХрд░рддреЗ.

рдЕрдкрд╡рд╛рдж

рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдорд╛рд▓рд╛ рдЕрдкрд╡рд╛рдж рдЖрд╣реЗрдд рдЖрдгрд┐ рдореА рдЖрдзреА рд╕рд╛рдВрдЧрд┐рддрд▓реЗ рдЖрд╣реЗ рдХреА рдбреЗрдЯрд╛рдмреЗрд╕ рдлрд░реНрд╕реНрдЯ рдЖрдгрд┐ рд╕реЛрд░реНрд╕ рдХреЛрдб рдЬрдирд░реЗрд╢рдирдЪрд╛ рджреГрд╖реНрдЯреАрдХреЛрди рдХрдзреА рдХрдзреА рдЕрдпреЛрдЧреНрдп рдЕрд╕реВ рд╢рдХрддреЛ. рдпреЗрдереЗ рдЕрд╕реЗ рдХрд╛рд╣реА рдЕрдкрд╡рд╛рдж рдЖрд╣реЗрдд (рдХрджрд╛рдЪрд┐рдд рдЗрддрд░ рдЖрд╣реЗрдд):

  • рдЬреЗрд╡реНрд╣рд╛ рд╕реНрдХреАрдорд╛ рдЕрдЬреНрдЮрд╛рдд рдЕрд╕рддреЗ рдЖрдгрд┐ рдЙрдШрдбрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдореНрд╣реА рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдЖрдХреГрддреАрдордзреНрдпреЗ рдиреЗрд╡реНрд╣рд┐рдЧреЗрдЯ рдХрд░рдгреНрдпрд╛рдд рдорджрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╕рд╛рдзрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛. рдУрдл. рдЗрдереЗ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдирд╛рд╣реА. рдкрдг рддрд░реАрд╣реА - рд╕рд░реНрд╡ рдкреНрд░рдердо рдбреЗрдЯрд╛рдмреЗрд╕.
  • рдЬреЗрд╡реНрд╣рд╛ рдПрдЦрд╛рджреА рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рдгреНрдпрд╛рд╕рд╛рдареА рдлреНрд▓рд╛рдпрд╡рд░ рд╕рд░реНрдХрд┐рдЯ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рддреЗ. рд╣реЗ рдЙрджрд╛рд╣рд░рдг рдкреЕрдЯрд░реНрдирдЪреА рдХрд┐рдВрдЪрд┐рдд рдЪрдкрдЦрд▓ рдЖрд╡реГрддреНрддреА рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рджрд┐рд╕рддреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдЧреБрдгрдзрд░реНрдо рдореВрд▓реНрдп, рдореНрд╣рдгрдЬреЗ, рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЦрд░реЛрдЦрд░рдЪ рд╕реБ-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реНрдХреАрдорд╛ рдирд╛рд╣реА. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдЖрдкрдг рдЕрдиреЗрдХрджрд╛ рдЦрд╛рддреНрд░реА рджреЗрдЦреАрд▓ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА рдХреА RDBMS рдЖрдкрд▓реНрдпрд╛рд╕ рдЕрдиреБрдХреВрд▓ рдЕрд╕реЗрд▓.

рдЕрдкрд╡рд╛рдж рд╕реНрд╡рднрд╛рд╡рд╛рдиреЗ рдЕрдкрд╡рд╛рджрд╛рддреНрдордХ рдЖрд╣реЗрдд. RDBMS рдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдмрд╣реБрддреЗрдХ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ, рд╕реНрдХреАрдорд╛ рдЖрдзреАрдЪ рдУрд│рдЦрд▓рд╛ рдЬрд╛рддреЛ, рддреЛ RDBMS рдЪреНрдпрд╛ рдЖрдд рдЕрд╕рддреЛ рдЖрдгрд┐ "рд╕рддреНрдп" рдЪрд╛ рдПрдХрдореЗрд╡ рд╕реНрддреНрд░реЛрдд рдЕрд╕рддреЛ рдЖрдгрд┐ рд╕рд░реНрд╡ рдХреНрд▓рд╛рдпрдВрдЯрдирд╛ рддреНрдпрд╛рддреВрди рдХрд╛рдврд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддреА рдкреНрд░рд╛рдкреНрдд рдХрд░рд╛рд╡реНрдпрд╛ рд▓рд╛рдЧрддрд╛рдд. рдЖрджрд░реНрд╢рдкрдгреЗ, рдпрд╛рдордзреНрдпреЗ рдХреЛрдб рдЬрдирд░реЗрдЯрд░рдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЕрд╕рд╛рд╡рд╛.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛