рд╢рд╛рдпрдж рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреБрд▓реЗ рд╕реНрд░реЛрдд Celesta рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирддреЗ рд╣реИрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ, рдЕрдм рд╣рдо рдЖрдкрдХреЛ рд╕рдм рдХреБрдЫ рдмрддрд╛рдПрдВрдЧреЗред рдПрдХ рдФрд░ рд╕рд╛рд▓ рдмреАрдд рдЧрдпрд╛, рд╕рдВрд╕реНрдХрд░рдг 7.x рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдмрд╣реБрдд рд╕рд╛рд░реА рдЪреАрдЬреЗрдВ рдмрджрд▓ рдЧрдИ рдереАрдВ, рдФрд░ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдерд╛, рдФрд░ рд╕рд╛рде рд╣реА рдпрд╣ рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдХреНрдпрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдиреЗ рдЕрднреА рддрдХ Celesta рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рддреЗ рд╕рдордп, рдЖрдк рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдХрд╛рд░реНрдп рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рд╣реИрдВ, рддреЛ рдореИрдВ рдкреБрд░рд╛рдиреЗ рдкреЛрд╕реНрдЯ рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдпрд╛ рдЗрд╕ рдЖрдзреЗ рдШрдВрдЯреЗ рдХреЗ рд╡реАрдбрд┐рдпреЛ (рдкрд╛рдпрдерди рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рдмреНрджреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдмреЗрд╣рддрд░ рдЕрднреА рднреА, рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрд╣рд▓реЗ рдкрдврд╝реЗрдВред рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 7 рдореЗрдВ рд╣реБрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдлрд┐рд░ рдореИрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдмреИрдХреЗрдВрдб рд╕реЗрд╡рд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдХреЗ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рддрдХрдиреАрдХреА рдЙрджрд╛рд╣рд░рдг рд▓реВрдВрдЧрд╛ред
рд╕рдВрд╕реНрдХрд░рдг 7.x рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдЖрдпрд╛ рд╣реИ?
- рд╣рдордиреЗ рдЬреЗрдереЙрди рдХреЛ рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдЕрдЧрд░ рдкрд╣рд▓реЗ рд╣рдордиреЗ рд╕реЗрд▓рд╕реНрдЯрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдХрд┐ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЕрдм ... рдХреЛрдИ рднреА рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреА рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ: рдЬрд╛рд╡рд╛, рдЧреНрд░реВрд╡реА, рдЖрд░рдпреВрдмреА рдпрд╛ рд╡рд╣реА рдЬрд╛рдЗрдердиред рдЕрдм Celesta рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХ рдХреЛрдб рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХ рдХреЛрдб Celesta рдФрд░ рдЙрд╕рдХреЗ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕рдмрд╕реЗ рдЖрдо рдЬрд╛рд╡рд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рдВ, рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣ рдХреАрдордд рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рджреЗрдиреЗ рдХреЛ рддреИрдпрд╛рд░ рдереЗред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, Jython рдкрд░ рд╣рдорд╛рд░рд╛ рджрд╛рдВрд╡ рд╣рд╛рд░ рдЧрдпрд╛ред рдЬрдм рд╣рдордиреЗ рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЬрд╛рдЗрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛, рддреЛ рдпрд╣ рдПрдХ рдЬреАрд╡рдВрдд рдФрд░ рдЖрд╢рд╛рдЬрдирдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдереА, рд▓реЗрдХрд┐рди рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдзреАрдорд╛ рд╣реЛ рдЧрдпрд╛, рднрд╛рд╖рд╛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢рди рд╕реЗ рдмреИрдХрд▓реЙрдЧ рдЬрдорд╛ рд╣реЛ рдЧрдпрд╛, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд╛рдЗрдк рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реБрдЖред рдЕрдВрддрд┐рдо рднреВрд╕рд╛ рдирд╡реАрдирддрдо рднрд╛рд╖рд╛ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдирдП рдХреАрдбрд╝реЗ рдереЗ, рдЬреЛ рдЙрддреНрдкрд╛рджрди рднрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЦреБрдж рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддреЗ рдереЗред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬрд╛рдЗрдерди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рд╣рдордиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рднрд╛рдЧреАрджрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред Celesta рдЕрдм Jython рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реИред
- рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХреНрд▓рд╛рд╕реЗрд╕ рдЕрдм рдЬрд╛рд╡рд╛ рд▓реИрдВрдЧреНрд╡реЗрдЬ (рдФрд░ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдкрд╛рдЗрдерди рдирд╣реАрдВ) рдореЗрдВ рдорд╛рд╡реЗрди рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб-рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдФрд░ рдЪреВрдБрдХрд┐ рд╣рдо рдбрд╛рдпрдиреЗрдорд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╕реЗ рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреА рдУрд░ рдЪрд▓реЗ рдЧрдП рдереЗ, рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рдЗрд╕рдореЗрдВ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдЕрдзрд┐рдХ рдЕрд╡рд╕рд░ рдереЗ рдФрд░ рд╡рд┐рд╖рдпрд╡рд╛рд░ рд╕рд╣реА рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ред
- JUnit5 рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП JUnit5 рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрд░реНрдХ рдХреЗ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рдЧрдпрд╛ (рдЬрд┐рд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА)ред
- рдПрдХ рдЕрд▓рдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рджрд┐рдЦрд╛рдИ рджреА рд╣реИ - рд╕реНрдкреНрд░рд┐рдВрдЧ-рдмреВрдЯ-рд╕реНрдЯрд╛рд░реНрдЯрд░-рд╕реЗрд▓реЗрд╕реНрдЯрд╛ , рдЬреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдореЗрдВ рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рд╕реНрдЯрд╛рд░реНрдЯрд░ рд╣реИред рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдкреИрдХ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдиреЗ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рдмрджрд▓рдХрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рд▓рд┐рдП рдореБрдЖрд╡рдЬрд╛ рджрд┐рдпрд╛ред
- рд╣рдордиреЗ рд╡рд┐рдХреА рд╕реЗ рд▓реЗрдХрд░ рдЕрд╕рд┐рд╕реАрдбреЙрдХреНрдЯрд░ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдП , рдЗрд╕реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд░рдЦрд╛, рдФрд░ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдЕрдк-рдЯреВ-рдбреЗрдЯ рдкреНрд░рд▓реЗрдЦрди рд╣реИред рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП, рдСрдирд▓рд╛рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдпрд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИ: https://courseorchestra.imtqy.com/celesta/
- рд╣рдорд╕реЗ рдЕрдХреНрд╕рд░ рдкреВрдЫрд╛ рдЬрд╛рддрд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рд╕реЗ рдЕрд▓рдЧ рдбреАрдбреАрдПрдордПрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЕрдм 2bass рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдРрд╕рд╛ рдЕрд╡рд╕рд░ рд╣реИред
рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдХреНрдпрд╛ рд╣реИ рдФрд░ рд╡рд╣ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреА рд╣реИ?
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рд╣реИ:
- рдбреЗрдЯрд╛рдмреЗрд╕-рдкреНрд░рдердо рдбрд┐рдЬрд╝рд╛рдЗрди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛрдб рдХреЗ рдмреАрдЪ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рдд,
- рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рд╡рд╛рд╕рди рддрдВрддреНрд░,
- рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдХреА рд░реВрдкрд░реЗрдЦрд╛ред
рд╣рдо рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ: PostgreSQL, MS SQL рд╕рд░реНрд╡рд░, Oracle рдФрд░ H2ред
рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
- рдЬрд╛рд╡рд╛ рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рдорд╛рди рдПрдХ рд╕рд┐рджреНрдзрд╛рдВрдд: "рдПрдХ рдмрд╛рд░ рд▓рд┐рдЦреЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╕рдорд░реНрдерд┐рдд рдЖрд░рдбреАрдмреАрдПрдордПрд╕ рдкрд░ рдЪрд▓рд╛рдПрдВред" рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЛрдб рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЪрд▓реЗрдЧрд╛ред рдЖрдк рд╡реНрдпрд╡рд╕рд╛рдп рддрд░реНрдХ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ MS SQL рд╕рд░реНрд╡рд░ рдореЗрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ PostgreSQL рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рд╣реЛрдЧрд╛ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рд▓рдЧрднрдЧ :)
- рд▓рд╛рдЗрд╡ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреБрдирд░реНрдЧрдардиред рд╕реЗрд▓реЗрд╕реНрдЯрд╛-рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЬреАрд╡рди рдЪрдХреНрд░ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХрд╛рд░реНрдпрд╢реАрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдРрд╕реЗ рдбреЗрдЯрд╛ рд╕реЗ рднрд░рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдмрджрд▓рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдХреА рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ "рдлрд┐рдЯ" рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред
- рдкрд░реАрдХреНрд╖рдгред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рд╣реИ, рддрд╛рдХрд┐ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХреЗрдВ, рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ, рдЬрд▓реНрджреА рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдврдВрдЧ рд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдгреЛрдВ рдЬреИрд╕реЗ рдХрд┐ рдбрдмрдиреЗрдЯ рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ред
рдЖрдкрдХреЛ рдбреАрдмреАрдПрдордПрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
DBMS рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд▓реЙрдЬрд┐рдХ рдХреЛрдб рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рд╣рдо рдкрд╣рд▓реЗ рдмрд┐рдВрджреБ рдирд╣реАрдВ рдереЗ: рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ DBMS рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдХреНрдпреЛрдВ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдбреАрдмреАрдПрдордПрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд╕рдВрдж рдПрдХ рддрдХрдиреАрдХреА рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд░рд╛рдЬрдиреАрддрд┐рдХ рд╣реИред рдПрдХ рдирдП рд╡реНрдпрд╛рдкрд╛рд░ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП рдЖ рд░рд╣рд╛ рд╣реИ, рд╣рдо рдЕрдХреНрд╕рд░ рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╕рдВрджреАрджрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ DBMS рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдзрди рдХрд╛ рдирд┐рд╡реЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдореМрдЬреВрджрд╛ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдкрд░ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рддрдХрдиреАрдХреА рдкрд░рд┐рджреГрд╢реНрдп рдмрджрд▓ рд░рд╣рд╛ рд╣реИ: PostgreSQL рддреЗрдЬреА рд╕реЗ рд╕рд░рдХрд╛рд░реА рдПрдЬреЗрдВрд╕рд┐рдпреЛрдВ рдФрд░ рдирд┐рдЬреА рдХрдВрдкрдирд┐рдпреЛрдВ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдПрдордПрд╕ рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рд░реНрд╡рд░ рд╣рдорд╛рд░реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкреНрд░рдмрд▓ рдерд╛ред рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рд╕рдмрд╕реЗ рдЖрдо DBMSs рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рджреВрд╕рд░реЗ, рдореИрдВ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рджреВрд╕рд░реА рдореЗрдВ рдорд╛рдирдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рдмрдирд╛рдП рдЧрдП рдХреЛрдб рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдпрд╛ рдИрдореЗрд▓ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рд╡рд┐рддрд░рдг рдореЙрдбреНрдпреВрд▓ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдорд╛рдирдХ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдмрдВрдзреЛрдВ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рддреАрд╕рд░реЗ, рдЕрдВрддрд┐рдо рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо, рдПрдХ рдЗрди-рдореЗрдореЛрд░реА H2 рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ DbUnit рдФрд░ рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред рдЗрд╕ рдореЛрдб рдореЗрдВ, H2 рдмреЗрд╕ рддреБрд░рдВрдд рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдмрд╣реБрдд рдЬрд▓реНрджреА рдЗрд╕рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛ рд╕реНрдХреАрдо рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рддрджрдиреБрд╕рд╛рд░, рдпрджрд┐ рдпрд╣ рдПрдЪ 2 рдкрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕реАрдХреНрдпреВрдПрд▓ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдмреЗрд╢рдХ, рдЦреБрдж рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рдХрд╛рд░реНрдп рд╡рд╛рд╕реНрддрд╡рд┐рдХ DBMS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рд╣рдорд╛рд░рд╛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрдмрдВрдзреЛрдВ рдкрд░ рдЕрдкрдиреЗ рдПрдкреАрдЖрдИ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╣рдо рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдбреЗрд╡рд▓рдкрд░ рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
CelestaSQL
рдХреНрд░реЙрд╕-рдмреЗрд╕рдореЗрдВрдЯрд╡рд╛рдж рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдмреЗрд╢рдХ, рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреАрдордд рдкрд░ рдЬреЛ рддрд░реНрдХ рдХреЛ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдПрдХ рддрд░рдл рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдУрд░ SQL рдХреЛрдб рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рд╕рд╣рд╛рдпрдХ рд╡рд╕реНрддреБрдПрдВред
рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдЕрдкрдиреЗ рд╢реБрджреНрдз рд░реВрдк рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ-рд░рд┐рд▓реЗрд╢рдирд▓ рдореИрдкрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╕рдордп рд╣рдо рдХрдХреНрд╖рд╛рдУрдВ рд╕реЗ рдирд╣реАрдВ рдЖрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рд╕реЗред рдпрд╣реА рд╣реИ, рдкрд╣рд▓реЗ рд╣рдо рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдИрдЖрд░-рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░, рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рд╕реНрд╡рдпрдВ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реНрд╕рд░ рдХрдХреНрд╖рд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
рдЖрдк рдХреЗрд╡рд▓ рд╕рдорд░реНрдерд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдорд░реНрдерд┐рдд DBMS рдкрд░ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ "рдпреВрд▓рд░ рд╕рд░реНрдХрд▓" рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдЖрдзрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рдорд┐рд▓рддреЗ рд╣реИрдВ:

рдпрджрд┐ рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкреВрд░реНрдг рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣рдо рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдЙрд╕реЗ рд╕рднреА рдард┐рдХрд╛рдиреЛрдВ рдХреЗ рдЪреМрд░рд╛рд╣реЗ рдХреЗ рдЕрдВрджрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реАрдорд╛ рд╣реИред рд╣рд╛рдВ: рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо SQL рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдкрд╡рд╛рдж рдХреЗ рдмрд┐рдирд╛, рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдЯреЗрдмрд▓, рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА, рд╡рд┐рдЪрд╛рд░, рдЕрдиреБрдХреНрд░рдо, рдЬреЙрдЗрди рдФрд░ рдЧреНрд░реБрдк рдмрд╛рдп рдХреЗ рд╕рд╛рде рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рд╣рдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдпреЗ рдЕрд╡рд╕рд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ "рдкреНрд░рддрд┐рд░реВрдкрд┐рдд SQL" рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо "CelestaSQL" рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдмреЛрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП SQL рдХреНрд╡реЗрд░реА рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред
CelestaSQL рднрд╛рд╖рд╛ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реЗрд▓реЗрдХреНрдЯ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЗ рд▓рд┐рдП DDL рд╢рд╛рдорд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ DML рдХрдорд╛рдВрдб рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ: рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рди рдкрд░ рдЕрднреА рднреА рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдиреА рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЕрдкрдирд╛ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред CelestaSQL рдХреЗ рдЕрдкрдиреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реЗрдЯ рднреА рд╣реИрдВред рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рдЙрдирдореЗрдВ рд╕реЗ рдиреМ рд╣реИрдВ, рдФрд░ рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдЬрд╛рд╡рд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЙрдирдХреА рддреБрд▓рдирд╛ рдХрд░рддреА рд╣реИред
рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдиреМ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, PostgreSQL рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреЗ рдРрд╕реЗ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ рдЬреЛ рд╡рд┐рддреНрддреАрдп, рд╡реНрдпрд╛рдкрд╛рд░ рдФрд░ рд▓реЙрдЬрд┐рд╕реНрдЯрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ: рддрд╛рд░, рдкреВрд░реНрдгрд╛рдВрдХ, рдЖрдВрд╢рд┐рдХ рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рджрд┐рдирд╛рдВрдХ, рдмреВрд▓рд┐рдпрди рдорд╛рди рдФрд░ рдмреНрд▓рдм рд╣рдореЗрд╢рд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред
CelestaSQL рднрд╛рд╖рд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЖрд░реЗрдЦреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╕рдВрд╢реЛрдзрдиред рдмреЗрд░реЛрдЬрдЧрд╛рд░ рдбреАрдбреАрдПрд▓
рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдХреА рдПрдХ рдЕрдиреНрдп рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╢реАрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, idempotent DDL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЬрдм рд╣рдо CelestaSQL рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рда рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
CREATE TABLE OrderLine( order_id VARCHAR(30) NOT NULL, line_no INT NOT NULL, item_id VARCHAR(30) NOT NULL, item_name VARCHAR(100), qty INT NOT NULL DEFAULT 0, cost REAL NOT NULL DEFAULT 0.0, CONSTRAINT Idx_OrderLine PRIMARY KEY (order_id, line_no) );
- рдЗрд╕ рдкрд╛рда рдХреЛ рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рджреНрд╡рд╛рд░рд╛ "рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрдВ", рд▓реЗрдХрд┐рди "рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рд▓рд╛рдПрдВ"ред рд╡рд╣ рдпрд╣ рд╣реИ: тАЬрдпрджрд┐ рдХреЛрдИ рддрд╛рд▓рд┐рдХрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдПрдВ, рдпрджрд┐ рдХреЛрдИ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ, рддреЛ рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреМрди рд╕реЗ рдлрд╝реАрд▓реНрдб рд╣реИрдВ, рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реИрдВ, рдХреМрди рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╣реИрдВ, рдХреМрди рд╕реА рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реИрдВ, рдХреНрдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╣реИрдВ, рдЖрджрд┐, рдФрд░ рдХреНрдпрд╛ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕рд╣реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред тАЭ
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:
- рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдХреА рд╡рд░реНрддрдорд╛рди "рд╡рд╛рдВрдЫрд┐рдд рдЫрд╡рд┐" рджреЗрдЦрддреЗ рд╣реИрдВ,
- рдХреНрдпрд╛, рдХрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдФрд░ рдХреНрдпреЛрдВ рд╕рдВрд░рдЪрдирд╛ рд╕рдордп рдХреЗ рд╕рд╛рде рдмрджрд▓ рдЧрдИ рд╣реИ, рд╣рдо рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ,
- ALTER рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП, рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ "рд╣реБрдб рдХреЗ рддрд╣рдд" рдЙрддреНрдкрдиреНрди рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдмреЗрд╢рдХ, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЕрдкрдиреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВред рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ рд╕рдВрднрд╡ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреНрд░рд╡рд╛рд╕ рджрд░реНрдж рд░рд╣рд┐рдд рдФрд░ рдирд┐рд░реНрдмрд╛рдз рд╣реЛ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдкреНрд░реЗрд░рдгрд╛, рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдФрд░ рд╕реАрдорд╛рдПрдВ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдереАрдВ (рдЗрд╕рдХрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ)ред
рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреА рдЬрд╛рдБрдЪ / рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Celesta рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ DDL рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪреЗрдХрд╕рдо рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рдЪреЗрдХрд╕рдо рдХреЛ рдмрджрд▓ рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреА рдЬрд╛рдБрдЪ рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ)ред рдПрдХ рджреВрд╕рд░реЗ рдкрд░ рдирд┐рд░реНрднрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдХреНрд░рдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП, рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рдордпрд┐рдХ рдЫрдВрдЯрд╛рдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
рдПрдХ рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдмрдирд╛рдирд╛
рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ, рдЬрд┐рд╕ рдкрд░ рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬреАрдердм рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрддреЗ рд╕рдордп рдЖрдк рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдорд╛рд╡реЗрди рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ:
org.springframework.boot:spring-boot-starter-web
рдФрд░ ru.curs:spring-boot-starter-celesta
(рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ ru.curs:spring-boot-starter-celesta
)ред- рдпрджрд┐ рдЖрдк рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк
ru.curs:celesta-system-services
рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ru.curs:celesta-system-services
рдирд┐рд░реНрднрд░рддрд╛ рд╕реАрдзреЗред ru.curs:celesta-maven-plugin
-рдПрд╕рдХреНрдпреВрдПрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП, ru.curs:celesta-maven-plugin
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ru.curs:celesta-maven-plugin
- рдПрдХ рдбреЗрдореЛ рдЙрджрд╛рд╣рд░рдг рдпрд╛ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПред- рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП JUnit5 рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
ru.curs:celesta-unit
рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ru.curs:celesta-unit
рдкрд░реАрдХреНрд╖рдг рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ ru.curs:celesta-unit
ред
рдЕрдм рдПрдХ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдмрдирд╛рдПрдВ рдФрд░ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдПрдХ рдИ-рдХреЙрдорд░реНрд╕ рдХрдВрдкрдиреА рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рджреВрд╕рд░реА рдХрдВрдкрдиреА рдореЗрдВ рд╡рд┐рд▓рдп рд╣реБрдЖ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЕрдкрдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИред рд╡реЗ рдЖрджреЗрд╢ рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рд╡реЗ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рд╡рд┐рд▓рдп рдирд╣реАрдВ рдХрд░рддреЗ, рддрдм рддрдХ рдЙрдиреНрд╣реЗрдВ рдмрд╛рд╣рд░ рд╕реЗ рдЖрджреЗрд╢ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЗрд╕ "рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ" рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛рдлреА рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: CRUD рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд╛рде рдПрдХ HTTP рд╕реЗрд╡рд╛ рдЬреЛ рдПрдХ рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред
рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдбреЗрдЯрд╛рдмреЗрд╕-рдкреНрд░рдердо рдбрд┐рдЬрд╝рд╛рдЗрди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдСрд░реНрдбрд░ рд╕реНрдЯреЛрд░ рдХрд░рддреА рд╣реИред рдПрдХ рдЖрджреЗрд╢, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдПрдХ рд╕рдордЧреНрд░ рдЗрдХрд╛рдИ рд╣реИ: рдЗрд╕рдореЗрдВ рдПрдХ рд╣реЗрдбрд░ рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЧреНрд░рд╛рд╣рдХ, рдСрд░реНрдбрд░ рдХреА рддрд╛рд░реАрдЦ рдФрд░ рдСрд░реНрдбрд░ рдХреА рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрдИ рд▓рд╛рдЗрдиреЗрдВ (рдХрдореЛрдбрд┐рдЯреА рдЖрдЗрдЯрдо) рднреА рд╣реЛрддреА рд╣реИрдВред
рддреЛ, рдиреМрдХрд░реА рдХреЗ рд▓рд┐рдП: рдмрдирд╛рдПрдБ
src/main/celestasql
- рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ CelestaSQL рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкрде рд╣реИ- рдЗрд╕рдореЗрдВ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░реНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдЬрд╛рд╡рд╛ рдкреИрдХреЗрдЬ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ
ru/curs/demo
) рдХреА рдлрд╝реЛрд▓реНрдбрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВред - рдкреИрдХреЗрдЬ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ
.sql
рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
CREATE SCHEMA demo VERSION '1.0'; CREATE TABLE OrderHeader( id VARCHAR(30) NOT NULL, date DATETIME, customer_id VARCHAR(30), customer_name VARCHAR(50), manager_id VARCHAR(30), CONSTRAINT Pk_OrderHeader PRIMARY KEY (id) ); CREATE TABLE OrderLine( order_id VARCHAR(30) NOT NULL, line_no INT NOT NULL, item_id VARCHAR(30) NOT NULL, item_name VARCHAR(100), qty INT NOT NULL DEFAULT 0, cost REAL NOT NULL DEFAULT 0.0, CONSTRAINT Idx_OrderLine PRIMARY KEY (order_id, line_no) ); ALTER TABLE OrderLine ADD CONSTRAINT fk_OrderLine FOREIGN KEY (order_id) REFERENCES OrderHeader(id); CREATE VIEW OrderedQty AS SELECT item_id, sum(qty) AS qty FROM OrderLine GROUP BY item_id;
рдпрд╣рд╛рдВ рд╣рдордиреЗ рдПрдХ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рд╕реЗ рдЬреБрдбрд╝реА рджреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдПрдХ рджреГрд╢реНрдп рдЬреЛ рд╕рднреА рдСрд░реНрдбрд░ рдореЗрдВ рдореМрдЬреВрдж рд╕рд╛рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рдорд╛рддреНрд░рд╛ рд▓реМрдЯрд╛рдПрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ CREATE SCHEMA
рд╕реНрдХреАрдорд╛ рдХрдорд╛рдВрдб рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдирд┐рдпрдорд┐рдд рдПрд╕рдХреНрдпреВрдПрд▓ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рдордиреЗ demo
рд╕реНрдХреАрдорд╛ рд╕рдВрд╕реНрдХрд░рдг рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдерд╛ (рдХреИрд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рд╕реНрд╡рдд: рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ, рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВ)ред рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рднреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рднреА рдирд╛рдо рдХреЗрд╡рд▓ рдРрд╕реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд╛рд╡рд╛ рднрд╛рд╖рд╛ рдореЗрдВ рдорд╛рдиреНрдп рд╡рд░реНрдЧ рдФрд░ рдЪрд░ рдирд╛рдореЛрдВ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд░рд┐рдХреНрдд рд╕реНрдерд╛рди, рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдгреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдпрд╣ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╣рдордиреЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдирд╛рдо рдкрд░ рд░рдЦреА рдереАрдВ, рд╣рдо рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ / * рд╕реЗ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реБрдП, рд▓реЗрдХрд┐рди / ** рдХреЗ рд╕рд╛рде, рдХреИрд╕реЗ JavaDoc рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ - рдФрд░ рдпрд╣ рдХреЛрдИ рджреБрд░реНрдШрдЯрдирд╛ рдирд╣реАрдВ рд╣реИ! / ** рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЗрдХрд╛рдИ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЙрд╕ рдЗрдХрд╛рдИ рдХреЗ .getCelestaDoc()
рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреАред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрдм рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдЯрд╛-рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рддрддреНрд╡ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рдирд╡ рдкрдардиреАрдп рдлрд╝реАрд▓реНрдб рдирд╛рдо, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреИрд╕реЗ рдХрд░реЗрдВ рдЖрджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реАред
CelestaSQL рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИ: рдкрд╣рд▓рд╛, рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрди / рд╕рдВрд╢реЛрдзрди рдХреЗ рд▓рд┐рдП рдФрд░ рджреВрд╕рд░рд╛, рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХреНрд▓рд╛рд╕реЗрд╕ рдХреА рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЗ рд▓рд┐рдПред
рд╣рдо рдЕрднреА рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рдХреНрд▓рд╛рд╕реЗрд╕ рдЬреЗрдирд░реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╕ mvn generate-sources
рдХрдорд╛рдВрдб рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛, рдЕрдЧрд░ рдЖрдк IDEA рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдорд╛рд╡реЗрди рдХрдВрдЯреНрд░реЛрд▓ рдкреИрдирд▓ рдореЗрдВ 'рдЬреЗрдирд░реЗрдЯ рд╕реЛрд░реНрд╕ рдПрдВрдб рдлреЛрд▓реНрдбрд░реНрд╕ рдлреЛрд▓реНрдбрд░' рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, IDEA target/generated-sources/celesta
рдореЗрдВ рдмрдирд╛рдП target/generated-sources/celesta
рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ " target/generated-sources/celesta
рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддрд╛ рд╣реИред рдХреЛрдб рдкреАрдврд╝реА рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛ - рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ:

рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, src/main/resources/application.yml
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред рд╕реНрдкреНрд░рд┐рдВрдЧ-рдмреВрдЯ-рд╕реНрдЯрд╛рд░реНрдЯрд░-рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, IDEA рдЖрдкрдХреЛ рдХреЛрдб рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдХреЛрдб рд╡рд┐рдХрд▓реНрдк рдмрддрд╛рдПрдЧрд╛ред
рдпрджрд┐ рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" RDBMS рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди-рдореЗрдореЛрд░реА рдореЛрдб рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд H2 рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Celesta рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
celesta: h2: inMemory: true
"рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрджрд▓реЗрдВ
celesta: jdbc: url: jdbc:postgresql://127.0.0.1:5432/celesta username: <your_username> password: <your_password>
(рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдорд╛рд╡реЗрди рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдореЗрдВ PostgreSQL JDBC рдбреНрд░рд╛рдЗрд╡рд░ рднреА рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛)ред
рдЬрдм рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛рдмреЗрд╕, рд╡реНрдпреВ, рдЗрдВрдбреЗрдХреНрд╕, рдЖрджрд┐ рдПрдХ рдЦрд╛рд▓реА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рд╣реИрдВ, рдФрд░ рдПрдХ рдЧреИрд░-рдЦрд╛рд▓реА рдХреЗ рд▓рд┐рдП, рд╡реЗ рдбреАрдбреАрдПрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрд░рдЪрдирд╛рдУрдВ рд╕реЗ рдЕрдкрдбреЗрдЯ рд╣реИрдВред
рдбреЗрдЯрд╛ рд╣реЗрд░рдлреЗрд░ рдХреЗ рддрд░реАрдХреЗ рдмрдирд╛рдирд╛
рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓ рдЧрдпрд╛ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреИрд╕реЗ рдмрдирд╛рдИ рдЬрд╛рдП, рддреЛ рдЖрдк рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рд▓реЙрдЧрд┐рдВрдЧ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, Celesta рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░ рдХреЛрдИ рднреА рдСрдкрд░реЗрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛрдИ "рдЕрдирд╛рдо" рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдХрд┐рд╕реА рднреА Celesta рдХреЛрдб рдХреЛ CallContext рд╡рд░реНрдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреЙрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред
- рдПрдХ рдСрдкрд░реЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ,
CallContext
рд╕рдХреНрд░рд┐рдп рд╣реИред - рд╕рдХреНрд░рд┐рдпрдг рдХреЗ рд╕рдордп, рдХрдиреЗрдХреНрд╢рди рдкреВрд▓ рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдПрдХ рдХрдиреЗрдХреНрд╢рди рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд▓реЗрдирджреЗрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
- рдСрдкрд░реЗрд╢рди
CallContext
рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж CallContext
рдпрд╛ рддреЛ commit()
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ CallContext
рдпрджрд┐ рдСрдкрд░реЗрд╢рди рд╕рдлрд▓ рд░рд╣рд╛ рдерд╛, рдпрд╛ rollback()
рдпрджрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рдЕрдЦрдВрдб рдЕрдкрд╡рд╛рдж рд╣реБрдЖ, рддреЛ CallContext
рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдкреВрд▓ рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рд╣рдо рд╕реНрдкреНрд░рд┐рдВрдЧ-рдмреВрдЯ-рд╕реНрдЯрд╛рд░реНрдЯрд░-рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпреЗ рдХреНрд░рд┐рдпрд╛рдПрдВ @CelestaTransaction
рджреНрд╡рд╛рд░рд╛ рдПрдиреЛрдЯреЗрдЯ рдХрд┐рдП рдЧрдП рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреА @CelestaTransaction
ред
рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдо рдПрдХ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдЪрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдирд┐рдпрдВрддреНрд░рдХ-рд╕реНрддрд░ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
@RestController @RequestMapping("/api") public class DocumentController { private final DocumentService srv; public DocumentController(DocumentService srv) { this.srv = srv; } @PutMapping("/save") public void saveOrder(@RequestBody OrderDto order) { CallContext ctx = new CallContext("user1");
рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐ рдХреЗ рд╕реНрддрд░ рдкрд░ (рдпрд╛рдиреА, рдЬрдм рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкрд╣рд▓реЗ рд╣реА рдмреАрдд рдЪреБрдХрд╛ рд╣реИ), рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ CallContext
рдмрдирд╛рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрд╛рдБрдзрдирд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреА рдУрд░ рд╕реЗ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рдЪ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рд╕рд┐рд╕реНрдЯрдо рдЯреЗрдмрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "user1" рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк Celesta рдПрдХреНрд╕реЗрд╕ рдбрд┐рд╕реНрдЯреНрд░реАрдмреНрдпреВрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд╕рддреНрд░ рд╕рдВрджрд░реНрдн рдХреЛ рдХрд┐рд╕реА рднреА рдЯреЗрдмрд▓ рдкрд░ рд╕рднреА рдЕрдзрд┐рдХрд╛рд░ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ SystemCallContext
рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реЗрд╡рд╛ рд╕реНрддрд░ рдкрд░ рдЪрд╛рд▓рд╛рди рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреА рд╡рд┐рдзрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:
@Service public class DocumentService { @CelestaTransaction public void postOrder(CallContext context, OrderDto doc) { try (OrderHeaderCursor header = new OrderHeaderCursor(context); OrderLineCursor line = new OrderLineCursor(context)) { header.setId(doc.getId()); header.setDate(Date.from(doc.getDate().atStartOfDay(ZoneId.systemDefault()).toInstant())); header.setCustomer_id(doc.getCustomerId()); header.setCustomer_name(doc.getCustomerName()); header.insert(); int lineNo = 0; for (OrderLineDto docLine : doc.getLines()) { lineNo++; line.setLine_no(lineNo); line.setOrder_id(doc.getId()); line.setItem_id(docLine.getItemId()); line.setQty(docLine.getQty()); line.insert(); } } }
@CelestaTransaction
рдПрдиреЛрдЯреЗрд╢рди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдкреНрд░реЙрдХреНрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ DocumentService
рд╕рд░реНрд╡рд┐рд╕ рдЙрди рд╕рднреА рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд CallContext ctx
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд░реЗрдЧрд╛ред рдпрд╣реА рд╣реИ, рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реЛрдЧрд╛, рдФрд░ рд▓реЗрдирджреЗрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдЧрд╛ред рд╣рдо рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд▓рд┐рдЦрдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, OrderDto
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрдврд╝рдирд╛ рдФрд░ рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рддрдерд╛рдХрдерд┐рдд celesta-maven-plugin
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - celesta-maven-plugin
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрддреНрдкрдиреНрди рдХрдХреНрд╖рд╛рдПрдВред рд╣рдо рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рд╣реИрдВред рд╕реНрдХреАрдорд╛ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рджреЛ рдЯреЗрдмрд▓ рдФрд░ рдПрдХ рджреГрд╢реНрдпред рдФрд░ рдЕрдм рд╣рдо рдЕрдкрдиреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдСрд░реНрдбрд░ рдЯреЗрдмрд▓ рдкрд░ рдПрдХ рдХрд░реНрд╕рд░ рдмрдирд╛рдиреЗ рдФрд░ рдкрд╣рд▓рд╛ рд░рд┐рдХреЙрд░реНрдб рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:
OrderHeaderCursor header = new OrderHeaderCursor(context); header.tryFirst();
рд╣реЗрдбрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЧреЗрдЯ рдПрдВрдЯреНрд░реА рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдХрд░реНрд╕рд░ рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдореЗрдВ рд╕рдХреНрд░рд┐рдп рдХреЙрд▓ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣ рдХрд░реНрд╕рд░ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИред рдХреЙрд▓ рд╕рдВрджрд░реНрдн рд╡рд░реНрддрдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдЙрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдХрд░реНрд╕рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде, рд╣рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдлрд╝рд┐рд▓реНрдЯрд░, рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирд╛, рдФрд░ рднреА, рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд░рд┐рдХреЙрд░реНрдб рдбрд╛рд▓реЗрдВ, рд╣рдЯрд╛рдПрдВ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рдкреВрд░реЗ рдХрд░реНрд╕рд░ рдПрдкреАрдЖрдИ рдХреЛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдХреЛрдб рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
OrderHeaderCursor header = new OrderHeaderCursor(context); header.setRange("manager_id", "manager1"); header.tryFirst(); header.setCounter(header.getCounter() + 1); header.update();
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо manager_id рдлрд╝реАрд▓реНрдб рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╣рдо TryFirst рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╣рд▓рд╛ рд░рд┐рдХреЙрд░реНрдб рдкрд╛рддреЗ рд╣реИрдВред
(рдХреНрдпреЛрдВ "рдХреЛрд╢рд┐рд╢")get
, first
, insert
, update
рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: рдмрд┐рдирд╛ рдХреЛрд╢рд┐рд╢ рдХреЗ рдЙрдкрд╕рд░реНрдЧ (рдмрд╕ get(...)
, рдЖрджрд┐) рдФрд░ рдХреЛрд╢рд┐рд╢ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде ( tryGet(...)
, tryFirst()
, рдЖрджрд┐) ред рдпрджрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рдмрд┐рдирд╛ рддрд░реАрдХреЗ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ () рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛ рдпрджрд┐ рдХреЛрдИ рд░рд┐рдХреЙрд░реНрдб рдХрд░реНрд╕рд░ рдкрд░ рд╕реЗрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рдХреЛрд╢рд┐рд╢ рдЙрдкрд╕рд░реНрдЧ рд╡рд╛рд▓реЗ рддрд░реАрдХреЗ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдмреВрд▓рд┐рдпрди рдорд╛рди рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рдСрдкрд░реЗрд╢рди рдХреА рд╕рдлрд▓рддрд╛ рдпрд╛ рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред рдЕрдиреБрд╢рдВрд╕рд┐рдд рдЕрднреНрдпрд╛рд╕, рдЬрд╣рд╛рдВ рдХрд╣реАрдВ рднреА рд╕рдВрднрд╡ рд╣реЛ, рдЙрдкрд╕рд░реНрдЧ рдХреЗ рдмрд┐рдирд╛ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рддрд░рд╣, "рд╕реЗрд▓реНрдл-рдЯреЗрд╕реНрдЯрд┐рдВрдЧ" рдХреЛрдб рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд▓реЙрдЬрд┐рдХ рдФрд░ / рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдбреЗрдЯрд╛ рдореЗрдВ рд╕рдордп рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЬрдм tryFirst
рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ tryFirst
рд╣реИ, рддреЛ tryFirst
рдЪрд░ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдбреЗрдЯрд╛ рд╕реЗ рднрд░реЗ рд╣реЛрддреЗ рд╣реИрдВ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдорд╛рди рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЬрдм рдХрд░реНрд╕рд░ рдореЗрдВ рдбреЗрдЯрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо update()
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрд░реНрд╕рд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдХреЛрдб рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдмреЗрд╢рдХ, рджреМрдбрд╝ рд╣рд╛рд▓рдд / рдЦреЛ рдЕрджреНрдпрддрди рдХреЗ рдЙрджреНрднрд╡! рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рдХреНрд╖рдг рдХреЗ рдмреАрдЪ рдЬрдм рд╣рдордиреЗ "tryFirst" рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрди рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЙрд╕ рдкрд▓ рдЬрдм рд╣рдо "рдЕрдкрдбреЗрдЯ" рдмрд┐рдВрджреБ рдкрд░ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдИ рдЕрдиреНрдп рд╡реНрдпрдХреНрддрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдкреНрд░рд╛рдкреНрдд, рд╕рдВрд╢реЛрдзрд┐рдд рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдХрд░реНрд╕рд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ! рдЦреЛрдП рд╣реБрдП рдЕрдкрдбреЗрдЯ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдЖрд╢рд╛рд╡рд╛рджреА рд▓реЙрдХ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, Celesta рдПрдХ recversion
рдлрд╝реАрд▓реНрдб рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ UPDATE рдЯреНрд░рд┐рдЧрд░ рдХреЗ рд╕реНрддрд░ рдкрд░ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдЕрджреНрдпрддрди рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ " рд╕реБрд░рдХреНрд╖рд╛ рдЦреЛ рдЕрджреНрдпрддрди рдХреЗ рдЦрд┐рд▓рд╛рдл "ред
рдлрд┐рд░ рд╕реЗ рдпрд╛рдж рдХрд░реЗрдВ рдХрд┐ рдХреЙрд▓рдХреЙрдиреНрдЯреЗрдХреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЗрдирджреЗрди рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдпрджрд┐ рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдлрд▓ рд╣реЛрддреА рд╣реИ, рддреЛ рдПрдХ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рд╡рд┐рдзрд┐ рдПрдХ рдЕрдЦрдВрдб рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рддреЛ рд░реЛрд▓рдмреИрдХ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдХреБрдЫ рдЬрдЯрд┐рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдХреЙрд▓ рд╕рдВрджрд░реНрдн рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрдкреВрд░реНрдг рд▓реЗрди-рджреЗрди рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╣рдордиреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдбреЗрдЯрд╛ рджреВрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдкрдХреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдмрдбрд╝реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмреАрдЪ рдореЗрдВ рдПрдХ рдХрдореЗрдЯреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╡рд╣ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИ, рдЬрд┐рд╕реЗ context.commit()
рдХрд╣рдХрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдбреЗрдЯрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг
рдЖрдЗрдП рдПрдХ рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдмрдирд╛рдПрдВ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ OrderDto
рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛ рдкрджреНрдзрддрд┐ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред
JUnit5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдФрд░ celesta- celesta-unit
рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЙрдкрд▓рдмреНрдз JUnit5 рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХреА рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
@CelestaTest public class DocumentServiceTest { DocumentService srv = new DocumentService(); @Test void documentIsPutToDb(CallContext context) { OrderDto doc =... srv.postOrder(context, doc);
рдПрдиреЛрдЯреЗрд╢рди @CelestaTest
рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬреЛ JUnit5 рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ, рд╣рдо рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ CallContext context
рдкреИрд░рд╛рдореАрдЯрд░ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рдпрд╣ рд╕рдВрджрд░реНрдн рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдХреНрд░рд┐рдп рд╣реИ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ (рдЗрди-рдореЗрдореЛрд░реА рдПрдЪ 2) рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ рд╕реЗрд╡рд╛ рд╡рд░реНрдЧ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рд╣рдо рдЗрд╕реЗ new
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╕рдВрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрд╡рд╛ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмрд╛рдзрд╛ рдирд╣реАрдВ рд╣реИред
рд╣рдо рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЗ рддрд╣рдд рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рдордп рддрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИ, рдФрд░ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж рд╣рдо рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХрд┐ рд╣рдордиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ "рдХрдЪрд░рд╛" рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИред рдпреЗ рдкрд░реАрдХреНрд╖рдг рдмрд╣реБрдд рддреЗрдЬ рдЧрддрд┐ рд╕реЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЖрдЗрдП рдПрдХ рджреВрд╕рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдПрдВ рдЬреЛ JSON рдХреЛ рдХреБрд▓ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓реМрдЯрд╛рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдХрд┐рддрдиреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХрд╛ рдСрд░реНрдбрд░ рджрд┐рдпрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рджреЛ рдЖрджреЗрд╢ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╡рд╣ рдирдП getAggregateReport
рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдХреБрд▓ рдореВрд▓реНрдп рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ:
@Test void reportReturnsAggregatedQuantities(CallContext context) { srv.postOrder(context, . . .); srv.postOrder(context, . . .); Map<String, Integer> result = srv.getAggregateReport(context); assertEquals(5, result.get("A").intValue()); assertEquals(7, result.get("B").intValue()); }
getAggregateReport
рдореЗрдердб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП getAggregateReport
рд╣рдо рдСрд░реНрдбрд░рдбреЗрдХреНрдЯреА рд╡реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ, рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, CelestaSQL рдлрд╛рдЗрд▓ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
create view OrderedQty as select item_id, sum(qty) as qty from OrderLine group by item_id;
рдЕрдиреБрд░реЛрдз рдорд╛рдирдХ рд╣реИ: рд╣рдо рдЙрддреНрдкрд╛рдж рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдорд╛рддреНрд░рд╛ рдФрд░ рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛ рдЖрджреЗрд╢ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡реНрдпреВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЖрд░реНрдбрд░рдХреНрдпреВрдЯреАрдХреЛрд░реНрд╕ рдХрд░реНрд╕рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕ рдХрд░реНрд╕рд░ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрд╕ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд Map<String, Integer>
рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ Map<String, Integer>
:
@CelestaTransaction public Map<String, Integer> getAggregateReport(CallContext context) { Map<String, Integer> result = new HashMap<>(); try (OrderedQtyCursor ordered_qty = new OrderedQtyCursor(context)) { for (OrderedQtyCursor line : ordered_qty) { result.put(ordered_qty.getItem_id(), ordered_qty.getQty()); } } return result; }
рднреМрддрд┐рдХрддрд╛рд╡рд╛рджреА Celesta рджреГрд╢реНрдп
рдПрдХрддреНрд░рд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдмреБрд░рд╛ рд╣реИ? рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдлреА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╣рдорд╛рд░реЗ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рддрд╣рдд рдПрдХ рд╕рдордп рдмрдо рд░рдЦрддрд╛ рд╣реИ: рдЖрдЦрд┐рд░рдХрд╛рд░, рдПрдХ рджреГрд╢реНрдп, рдЬреЛ рдПрдХ SQL рдХреНрд╡реЗрд░реА рд╣реИ, рдзреАрдореА рдФрд░ рдзреАрдореА рдЪрд▓рд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЬрдорд╛ рд╣реЛрддрд╛ рд╣реИред рдЙрд╕реЗ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓рд╛рдЗрдиреЛрдВ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдФрд░ рд╕рдореВрд╣ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛ рдЬрд╛рдП?
рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдЙрди рд╕рднреА рдорд╛рдирдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд▓рдЧрд╛рддрд╛рд░ рдордВрдЪ рд╕реНрддрд░ рдкрд░ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред
MS SQL рд╕рд░реНрд╡рд░ рдореЗрдВ рднреМрддрд┐рдХреАрдХреГрдд (рдЕрдиреБрдХреНрд░рдорд┐рдд) рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ, рдЬреЛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ рдФрд░ рд╕реНрд░реЛрдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо "рдХреНрд▓реАрди" рдПрдордПрд╕ SQL тАЛтАЛрд╕рд░реНрд╡рд░ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдереЗ, рддреЛ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрдХреНрд░рдорд┐рдд рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рджреГрд╢реНрдп рдХрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╕рд┐рд░реНрдл рд╡рд╣реА рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА: рдПрдХрддреНрд░рд┐рдд рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдбреЗрдЯрд╛ рдХреЗ рдЬрдорд╛ рд╣реЛрдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдзреАрдорд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рдПрдХрддреНрд░рд┐рдд рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдлрд┐рд▓рд╣рд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрджреЗрд╢ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рдФрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рдмрдврд╝реЗрдЧрд╛ред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо Celesta рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ PostgreSQL рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рднреМрддрд┐рдХ рд╢рдмреНрдж рдХреЛ рдЬреЛрдбрд╝рдХрд░ рджреГрд╢реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
create materialized view OrderedQty as select item_id, sum(qty) as qty from OrderLine group by item_id;
рдЖрдЗрдП рд╕рд┐рд╕реНрдЯрдо рд╢реБрд░реВ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдХреНрдпрд╛ рд╣реБрдЖред
рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ OrderedQty
рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ OrderedQty
рддрд╛рд▓рд┐рдХрд╛ рджрд┐рдЦрд╛рдИ рджреА рд╣реИред рдЙрд╕реА рд╕рдордп, рдЬреИрд╕рд╛ рдХрд┐ рдСрд░реНрдбрд░рд▓рд╛рдЗрди рддрд╛рд▓рд┐рдХрд╛ рдбреЗрдЯрд╛ рд╕реЗ рднрд░реА рд╣реБрдИ рд╣реИ, рдСрд░реНрдбрд░рдбреЗрдХреНрдЯреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА "рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ" рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рдПрдЧреА, рдЬреИрд╕реЗ рдХрд┐ рдСрд░реНрдбрд░рдбреАрдХрдЯреА рдПрдХ рджреГрд╢реНрдп рд╣реЛрдЧрд╛ред
рдпрд╣рд╛рдВ рдХреЛрдИ рдЬрд╛рджреВ рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░ рд╣рдо OrderLine
рдЯреЗрдмрд▓ рдкрд░ рдмрдиреЗ рдЯреНрд░рд┐рдЧрд░реНрд╕ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рд╕реЗрд▓реЗрд╕реНрдЯрд╛ рдиреЗ "рднреМрддрд┐рдХ рджреГрд╖реНрдЯрд┐" рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рдХреНрд╡реЗрд░реА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдФрд░ OrderedQty
рддрд╛рд▓рд┐рдХрд╛ рдкрд░ OrderedQty
рдмрдирд╛рдпрд╛ рдЬреЛ рдХрд┐ OrderedQty
рдЕрдкрдбреЗрдЯ OrderedQty
ред CelestaSQL-file рдореЗрдВ рдПрдХ рднреА рдХреАрд╡рд░реНрдб - рднреМрддрд┐рдХреАрдХреГрдд - рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдХреЗ, рд╣рдордиреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛, рдФрд░ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЛрдб рдХреЛ рднреА рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА!
, , , . ┬л┬╗ Celesta , , JOIN-, GROUP BY. , , , , . . .
рдирд┐рд╖реНрдХрд░реНрд╖
Celesta. тАФ .