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

рд╣реЗ рд╣рд╛рдмрд░!

рд╣рд╛рдореА рд╡рд┐рд╖рдпрдХреЛ рдЕрдиреБрд╕рдиреНрдзрд╛рди рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫреМрдВ Java ╨╕ рд╡рд╕рдиреНрдд, рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕реНрддрд░ рд╕рд╣рд┐рддред рдЖрдЬ рд╣рд╛рдореА рддрдкрд╛рдИрд▓рд╛рдИ рдкрдвреНрди рдЖрдордиреНрддреНрд░рд┐рдд рдЧрд░реНрджрдЫреМрдВ рдХрд┐рди, рдареВрд▓рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдбрд┐рдЬрд╛рдЗрди рдЧрд░реНрджрд╛, рдпреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рд╣реЛ, рдЬрд╛рднрд╛ рдХреЛрдб рд╣реЛрдЗрди, рддреНрдпреЛ рдирд┐рд░реНрдгрд╛рдпрдХ рдорд╣рддреНрддреНрд╡рдХреЛ рд╣реБрдиреБрдкрд░реНрдЫ, рдпреЛ рдХрд╕рд░реА рдЧрд░рд┐рдиреНрдЫ, рд░ рдпрд╕ рдирд┐рдпрдордорд╛ рдХреЗ рдЕрдкрд╡рд╛рджрд╣рд░реВ рдЫрдиреНред

рдпреЛ рдмрд░реБ рдврд┐рд▓реЛ рд▓реЗрдЦрдорд╛, рдо рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдиреЗрдЫреБ рдХрд┐рди рдо рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЧрд░реНрдЫреБ рдХрд┐ рд▓рдЧрднрдЧ рд╕рдмреИ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдПрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдбрд╛рдЯрд╛ рдореЛрдбреЗрд▓ "рдЬрд╛рднрд╛ рдХреЛ рдХреНрд╖рдорддрд╛рд╣рд░реБ рдмрд╛рдЯ" рдХреЛ рд╕рдЯреНрдЯрд╛ "рдбреЗрдЯрд╛рдмреЗрд╕ рдмрд╛рдЯ" рдбрд┐рдЬрд╛рдЗрди рдЧрд░реНрдиреБрдкрд░реНрдЫ (рд╡рд╛ рдЬреБрдирд╕реБрдХреИ рдЧреНрд░рд╛рд╣рдХ рднрд╛рд╖рд╛ рддрдкрд╛рдИрдВ рд╣реБрдиреБрд╣реБрдиреНрдЫред рд╕рдВрдЧ рдХрд╛рдо рдЧрд░реНрджреИ)ред рджреЛрд╕реНрд░реЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдкрдирд╛рдПрд░, рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдвреНрди рдерд╛рд▓реЗрдкрдЫрд┐ рджреБрдЦрд╛рдЗ рд░ рдкреАрдбрд╛рдХреЛ рд▓рд╛рдореЛ рдорд╛рд░реНрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЖрдлреИрд▓рд╛рдИ рд╕реЗрдЯ рдЕрдк рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫред

рдЖрдзрд╛рд░рдорд╛ рд▓реЗрдЦ рд▓реЗрдЦрд┐рдПрдХреЛ рдерд┐рдпреЛ рдПрдЙрдЯрд╛ рдкреНрд░рд╢реНрди, Stack Overflow рдорд╛ рджрд┐рдЗрдПрдХреЛ рдЫред

рдЦрдгреНрдбрд╣рд░реВрдорд╛ 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)) {
    // ...
}

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

рд╕реНрд░реЛрдд рдХреЛрдб рдЙрддреНрдкрд╛рджрди

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

рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдХреЛрдб рдЬрдирд░реЗрдЯрд░рд╣рд░реВ рдЫрдиреНред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, XJC рд▓реЗ XSD рд╡рд╛ WSDL рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЬрд╛рднрд╛ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рд╕рдХреНрдЫред рд╕рд┐рджреНрдзрд╛рдиреНрдд рд╕рдзреИрдВ рд╕рдорд╛рди рдЫ:

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

рдпрд╕рдмрд╛рд╣реЗрдХ, рдЕрдирд╛рд╡рд╢реНрдпрдХрддрд╛рдмрд╛рдЯ рдмрдЪреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдпрд╕реНрддреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рд▓рдЧрднрдЧ рд╕рдзреИрдВ рд╕рд▓реНрд▓рд╛рд╣ рджрд┐рдЗрдиреНрдЫред

рдкреНрд░рдХрд╛рд░ рдкреНрд░рджрд╛рдпрдХрд╣рд░реВ рд░ рдПрдиреЛрдЯреЗрд╕рди рдкреНрд░рд╢реЛрдзрди

рдиреЛрдЯ: 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 рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ред рдпрд╕ рдорд╛рдорд▓рд╛ рдорд╛ рддрдкрд╛рдЗрдБрдХреЛ рд╕рдВрд╕реНрдерд╛рд╣рд░реБ рдХреЗ рд╣реБрдиреЗрдЫ? рддрдкрд╛рдЗрдБ рдпрд╛ рдд рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рд░ рдпрд╕рд░реА рддрдкрд╛рдЗрдБрдХреЛ рдХрд╛рд░реНрдпрднрд╛рд░ рджреЛрдмреНрдмрд░), рд╡рд╛ рддрдкрд╛рдЗрдБ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рд▓рд╛рдИ рддрдкрд╛рдЗрдБрдХреЛ рд▓рд╛рдЧрд┐ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреБрди: рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рднрдиреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рдХрддрд┐ рд╕рдореНрднрд╛рд╡рдирд╛ рдЫ рдХрд┐ рддрдкрд╛рдЗрдБрдХреЛ рдЕрдкреЗрдХреНрд╖рд╛рд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрди рдпрд╕ рддрд░рд┐рдХрд╛рд▓реЗ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫ?) рдХреБрдиреИ рдкрдирд┐ рддрд░рд┐рдХрд╛, рддрдкрд╛рдЗрдБ рд╣рд░рд╛рдЙрдиреБрд╣реБрдиреНрдЫред

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

рдмрд░реБ, рдЪреАрдЬрд╣рд░реВ рд╕реБрд░реБрджреЗрдЦрд┐ рдиреИ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдлрд░рдХ рддрд░рд┐рдХрд╛рд▓реЗ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдереНрдпреЛред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╕рд╛рдЗрдХрд▓рдорд╛ рдЧреЛрд▓ рдкрд╛рдЩреНрдЧреНрд░рд╛рд╣рд░реВ рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реНред

рдбрд╛рдЯрд╛рдмреЗрд╕ рдкрд╣рд┐рд▓реЗ

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

рдпрд╕рдмрд╛рд╣реЗрдХ, рддреНрдпреЛ рд╕рдмреИ рд╣реЛрдЗрдиред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, Oracle рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рддрдкрд╛рдЗрдБ рд╕рдореНрднрд╡рддрдГ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреНрдЫ:

  • рддрдкрд╛рдИрдХреЛ рдЯреЗрдмрд▓ рдХреБрди рдЯреЗрдмрд▓рд╕реНрдкреЗрд╕рдорд╛ рдЫ?
  • рдпрд╕рдХреЛ PCTFREE рдореВрд▓реНрдп рдХреЗ рд╣реЛ?
  • рддрдкрд╛рдИрдХреЛ рдЕрдиреБрдХреНрд░рдордорд╛ рдХреНрдпрд╛рд╕ рд╕рд╛рдЗрдЬ рдХреЗ рд╣реЛ (рдЖрдИрдбреА рдкрдЫрд╛рдбрд┐)

рдпреЛ рд╕рд╛рдирд╛ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдирд╣реБрди рд╕рдХреНрдЫ, рддрд░ рддрдкрд╛рдИрдВрд▓реЗ рдареВрд▓рд╛ рдбрд╛рдЯрд╛ рдХреНрд╖реЗрддреНрд░рдорд╛ рдирдЬрд╛рдЙрдиреНрдЬреЗрд▓ рдкрд░реНрдЦрдиреБ рдкрд░реНрджреИрди тАФ рддрдкрд╛рдИрдВрд▓реЗ рд╡рд┐рдХреНрд░реЗрддрд╛-рдкреНрд░рджрд╛рди рдЧрд░рд┐рдПрдХреЛ рднрдгреНрдбрд╛рд░рдг рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирд╣рд░реВрдмрд╛рдЯ рд▓рд╛рдн рдЙрдард╛рдЙрди рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЬрд╕реНрддреИ рдорд╛рдерд┐ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдПрдХрд╛рд╣рд░реВред рдореИрд▓реЗ рджреЗрдЦреЗрдХреЛ рдХреБрдиреИ рдкрдирд┐ ORMs (jOOQ рд╕рд╣рд┐рдд) рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрднрдПрдХреЛ DDL рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрдХреЛ рдкреВрд░реНрдг рд╕реЗрдЯрдорд╛ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдЧрд░реНрджреИрдиред ORM рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ DDL рд▓реЗрдЦреНрди рдорджреНрджрдд рдЧрд░реНрдиреЗ рдХреЗрд╣реА рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реНрджрдЫред

рддрд░ рджрд┐рдирдХреЛ рдЕрдиреНрддреНрдпрдорд╛, 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 рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ string constants рдХреЛ рд╕реЗрдЯ рдмрдирд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ
  • рдпрджрд┐ рддрдкрд╛рдЗрдБ 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 рдХрдХреНрд╖рд╛ред рдзреЗрд░реИ рдЬрд╕реЛ DDL рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрд▓реЗ рд╕рд┐рдореЗрдиреНрдЯрд┐рдХреНрд╕рд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрдЫ, рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕ рдорд╛рддреНрд░ рд╣реЛрдЗрдиред рддрд╕рд░реНрде, рдпреЛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рдХреЛрдб рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреЛрдЧреА рд╣реБрди рд╕рдХреНрдЫ (рд╡рд╛ рд╣реБрди рд╕рдХреНрдЫ) рддрдкрд╛рдЗрдБрдХреЛ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╡реГрджреНрдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реБрдиреЗрдЫред

рдПрдЙрдЯреИ рд╕рддреНрдп

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

  • XSD рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдмреБрдЭрд┐рдПрдХреЛ рдЫ
  • XSD рд▓реЗ XML рд╕рд╛рдордЧреНрд░реАрд▓рд╛рдИ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдЯреЛрдХрдирд╛рдЗрдЬ рдЧрд░реНрджрдЫ рд░ рд╕рдмреИ рдЧреНрд░рд╛рд╣рдХ рднрд╛рд╖рд╛рд╣рд░реВрдорд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ
  • XSD рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рд╕рдВрд╕реНрдХрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ рд░ рдЙрдиреНрдирдд рдмреНрдпрд╛рдХрд╡рд░реНрдб рдЕрдиреБрдХреВрд▓рддрд╛ рдЫ
  • XSD XJC рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЬрд╛рднрд╛ рдХреЛрдбрдорд╛ рдЕрдиреБрд╡рд╛рдж рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ

рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫред XML рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдмрд╛рд╣реНрдп рдкреНрд░рдгрд╛рд▓реАрд╕рдБрдЧ рд╕рдЮреНрдЪрд╛рд░ рдЧрд░реНрджрд╛, рд╣рд╛рдореА рд╣рд╛рдореНрд░рд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдорд╛рдиреНрдп рдЫрдиреН рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВред рдпреЛ JAXB, XJC рд░ XSD рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдЫред рдпреЛ рд╕реЛрдЪреНрдиреБ рд╕рд░рд╛рд╕рд░ рдкрд╛рдЧрд▓рдкрди рд╣реБрдиреЗрдЫ, "рдЬрд╛рднрд╛ рдлрд░реНрд╕реНрдЯ" рдбрд┐рдЬрд╛рдЗрди рджреГрд╖реНрдЯрд┐рдХреЛрдгрдХреЛ рд╕рд╛рде рдЬрд╣рд╛рдБ рд╣рд╛рдореА рд╣рд╛рдореНрд░рд╛ рд╕рдиреНрджреЗрд╢рд╣рд░реВрд▓рд╛рдИ рдЬрд╛рднрд╛ рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдмрдирд╛рдЙрдБрдЫреМрдВ, рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рдХреБрдиреИ рди рдХреБрдиреИ рд░реВрдкрдорд╛ XML рдорд╛ рдореНрдпрд╛рдк рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд░ рдЙрдкрднреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЕрд░реНрдХреЛ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдкрдард╛рдЙрди рд╕рдХрд┐рдиреНрдЫред рдпрд╕ рддрд░рд┐рдХрд╛рд▓реЗ рдЙрддреНрдкрдиреНрди рднрдПрдХреЛ XML рдзреЗрд░реИ рдЦрд░рд╛рдм рдЧреБрдгрд╕реНрддрд░рдХреЛ, рдХрд╛рдЧрдЬрд╛рдд рдирднрдПрдХреЛ, рд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди рдЧрд╛рд╣реНрд░реЛ рд╣реБрдиреЗрдЫред рдпрджрд┐ рдпрд╕реНрддреЛ рдЗрдиреНрдЯрд░рдлреЗрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕реЗрд╡рд╛ рд╕реНрддрд░ рд╕рдореНрдЭреМрддрд╛ (SLA) рдерд┐рдпреЛ рднрдиреЗ, рд╣рд╛рдореА рддреБрд░реБрдиреНрддреИ рдпрд╕рд▓рд╛рдИ рдмрд┐рдЧрд╛рд░реНрдиреЗрдЫреМрдВред

рдЗрдорд╛рдирджрд╛рд░реАрдкреВрд░реНрд╡рдХ, рдпреЛ рдЬреЗрдПрд╕рдУрдПрди рдПрдкреАрдЖрдИрд╣рд░реВрд╕рдБрдЧ рд╕рдмреИ рд╕рдордп рд╣реБрдиреНрдЫ, рддрд░ рддреНрдпреЛ рдЕрд░реНрдХреЛ рдХрдерд╛ рд╣реЛ, рдо рдЕрд░реНрдХреЛ рдкрдЯрдХ рдЭрдЧрдбрд╛ рдЧрд░реНрдиреЗрдЫреБ ...

рдбрд╛рдЯрд╛рдмреЗрд╕: рддрд┐рдиреАрд╣рд░реВ рдПрдЙрдЯреИ рдХреБрд░рд╛ рд╣реБрдиреН

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

рдЬрдм рд╕реНрд░реЛрдд рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рднрдпреЛ, рд╕рдмреИ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрд▓реЗ рдореЛрдбреЗрд▓рдХреЛ рдЖрдлреНрдиреЛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐рд╣рд░реВ рдкрдирд┐ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдХреЗрд╣реА рдХреНрд▓рд╛рдЗрдиреНрдЯрд╣рд░реВ рдЬрд╛рднрд╛рдорд╛ jOOQ рд░ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рд╡рд╛ JDBC (рд╡рд╛ рджреБрдмреИ) рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓реЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫред рдЕрдиреНрдп рдХреНрд▓рд╛рдЗрдиреНрдЯрд╣рд░реВ рдкрд░реНрд▓рдорд╛ рд▓реЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ (рд╣рд╛рдореА рдХреЗрд╡рд▓ рдЙрдиреАрд╣рд░реВрд▓рд╛рдИ рд╢реБрднрдХрд╛рдордирд╛ рдЪрд╛рд╣рдиреНрдЫреМрдВ), рдЬрдмрдХрд┐ рдЕрдиреНрдпрд╣рд░реВ C# рдорд╛ рд▓реЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫред рдХреЗрд╣реА рдлрд░рдХ рдкрд░реНрджреИрдиред рдореБрдЦреНрдп рдореЛрдбреЗрд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдЫред ORMs рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЙрддреНрдкрд╛рджрди рдЧрд░рд┐рдПрдХрд╛ рдореЛрдбреЗрд▓рд╣рд░реВ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдЦрд░рд╛рдм рдЧреБрдгрд╕реНрддрд░рдХрд╛ рд╣реБрдиреНрдЫрдиреН, рдХрдордЬреЛрд░ рдХрд╛рдЧрдЬрд╛рддрд╣рд░реВ рд╣реБрдиреНрдЫрдиреН, рд░ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди рдЧрд╛рд╣реНрд░реЛ рд╣реБрдиреНрдЫред

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

рдорд▓рд╛рдИ рдЕрдЭреИ рдзрдиреНрдпрд╡рд╛рдж рдирджрд┐рдиреБрд╣реЛрд╕реН, рдкрдЫрд┐ред

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

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

рджреБрдИ-рд╕реНрддрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рд╣рд░реВрдорд╛, рдЬреБрди рдЕрдЭреИ рдкрдирд┐ рдХреЗрд╣реА рдард╛рдЙрдБрд╣рд░реВрдорд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдЫрдиреН, рдпрд╕реНрддреЛ рдкреНрд░рдгрд╛рд▓реА рдореЛрдбреЗрд▓ рдорд╛рддреНрд░ рд╕рдореНрднрд╡ рд╣реБрди рд╕рдХреНрдЫред рдпрджреНрдпрдкрд┐, рдзреЗрд░реИрдЬрд╕реЛ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рдбрд╛рдЯрд╛ рдкрд╣реБрдБрдЪ рддрд╣ рдорд▓рд╛рдИ "рд╕рдмрд╕рд┐рд╕реНрдЯрдо" рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдЬрд╕рд▓реЗ рдбрд╛рдЯрд╛рдмреЗрд╕ рдореЛрдбреЗрд▓рд▓рд╛рдИ рд╕рдореЗрдЯреНрдЫред

рдЕрдкрд╡рд╛рджрд╣рд░реВ

рддреНрдпрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдордорд╛ рдЕрдкрд╡рд╛рджрд╣рд░реВ рдЫрдиреН, рд░ рдореИрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рднрдиреЗрдХреЛ рдЫреБ рдХрд┐ рдбрд╛рдЯрд╛рдмреЗрд╕-рдкрд╣рд┐рд▓реЛ рд░ рд╕реНрд░реЛрдд-рдХреЛрдб рдЙрддреНрдкрд╛рджрди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдВ рдЕрдиреБрдкрдпреБрдХреНрдд рд╣реБрди рд╕рдХреНрдЫред рдпрд╣рд╛рдБ рддреНрдпрд╕реНрддрд╛ рдХреЗрд╣реА рдЕрдкрд╡рд╛рджрд╣рд░реВ рдЫрдиреН (рддреНрдпрд╣рд╛рдБ рд╕рд╛рдпрдж рдЕрд░реВ рдкрдирд┐ рдЫрдиреН):

  • рдЬрдм рд╕реНрдХреАрдорд╛ рдЕрдЬреНрдЮрд╛рдд рдЫ рд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдЗрдБ рдПрдХ рдЙрдкрдХрд░рдгрдХреЛ рдкреНрд░рджрд╛рдпрдХ рд╣реБрдиреБрд╣реБрдиреНрдЫ рдЬрд╕рд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдХреБрдиреИ рдкрдирд┐ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдиреЗрднрд┐рдЧреЗрдЯ рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред рдЙрд╣ред рдпрд╣рд╛рдБ рдХреБрдиреИ рдХреЛрдб рдЙрддреНрдкрд╛рджрди рдЫреИрдиред рддрд░ рдЕрдЭреИ, рдбрд╛рдЯрд╛рдмреЗрд╕ рдкрд╣рд┐рд▓реЛ рдЖрдЙрдБрдЫред
  • рдЬрдм рдХреБрдиреИ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдЙрдбрд╛рдирдорд╛ рд╕рд░реНрдХрд┐рдЯ рдЙрддреНрдкрдиреНрди рд╣реБрдиреБрдкрд░реНрдЫред рдпреЛ рдЙрджрд╛рд╣рд░рдг рдврд╛рдБрдЪрд╛рдХреЛ рдЕрд▓рд┐ рдХрд╛рд▓реНрдкрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдЗрдХрд╛рдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореВрд▓реНрдп, рдЕрд░реНрдерд╛рддреН, рддрдкрд╛рдИрдВрд╕рдБрдЧ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдпреЛрдЬрдирд╛ рдЫреИрдиред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рддрдкрд╛рдЗрдБ рдкреНрд░рд╛рдп: рдирд┐рд╢реНрдЪрд┐рдд рд╣реБрди рд╕рдХреНрдиреБрд╣реБрдиреНрди рдХрд┐ RDBMS рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдЙрдкрдпреБрдХреНрдд рд╣реБрдиреЗрдЫред

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди