Jdbi: рд╕рдорд░реНрдерди R2DBC

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдлрд╝рд░ре░ 2019  ┬╖  16рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jdbi/jdbi

R2DBC рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд░реЗрдВред рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ jdbi-r2dbc ред рдПрдлрд╡рд╛рдИрдЖрдИ:

https://r2dbc.io/
https://github.com/r2dbc

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо vlingo-symbio рдореЗрдВ рдЬреЗрдбреАрдмреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдордВрдЪ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЗрд╕рдХреА рдЬрд╛рдВрдЪ - рдкрдбрд╝рддрд╛рд▓ рдХрд░реЗрдВред рд╣рдо рдЖрдкрдХреА рдЯреАрдо рдХреЛ рд╣рдорд╛рд░реЗ рдкреВрд░реНрдг рдордВрдЪ рдкрд░ рдЧрддрд┐ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред

https://github.com/vlingo/vlingo-symbio-jdbc/tree/master/src/main/java/io/vlingo/symbio/store/object/jdbc/jdbi

help wanted integration

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рдЯрд┐рдХрдЯ рджреЗрдЦрдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ред

рдореИрдВ R2DBC рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛:

  • рдпрд╣ рдЕрднреА рднреА рдПрдХ рдпреБрд╡рд╛ рдкрд╣рд▓ рд╣реИ рдФрд░ рдЬреАрдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмреАрдПрд▓рдУрдмреА/рд╕реАрдПрд▓рдУрдмреА рдФрд░ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд░реНрдерди рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рдиреА рд╣реИрдВред
  • рдбреНрд░рд╛рдЗрд╡рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдФрд░ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдВрдкреВрд░реНрдг I/O рднрд╛рдЧ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд╣реИред рдереНрд░реЗрдб рдкреВрд▓ рдореЗрдВ рдХрд╛рд░реНрдп рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдСрдлрд▓реЛрдбрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред

рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, R2DBC рдХрд╛ рд▓рдХреНрд╖реНрдп рдПрдХ SPI рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреИрд╕реЗ рдХрд┐ рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ R2DBC, R2DBC рдХреНрд▓рд╛рдЗрдВрдЯ (R2DBC SPI рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рдЖрд╡рд░рдг рдЬреЛ jdbi рд╕реЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдЙрдзрд╛рд░ рджреЗрддрд╛ рд╣реИ) рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдореЗрдВ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рднреА 16 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдп рд╡реЙрди, рд╕реВрдЪрдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдмрд╣реБрдд рдирдпрд╛ рдФрд░ рд░реЛрдорд╛рдВрдЪрдХ рд╣реИ рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ JDBC рдХрд╛ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╣реА, рдЗрд╕реЗ рдирд┐рдЪрд▓реА рдкрд░рддреЛрдВ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд░рд╛рдм рдЙрдореНрдореАрджрд╡рд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдореЗрдВ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рдкреНрд░рд╢реНрди рд▓реЗрддреА рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рд╣реЛрдиреЗ рддрдХ рдЕрдкрдиреА рдХреНрд╡реЗрд░реА рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧреАред 10 рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред

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

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

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

рдЕрд░реЗ, рд╕реНрдЯреАрд╡рди! рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдо рдЕрдкрдиреЗ vlingo-symbio рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреЗ рднреАрддрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░рдХреЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓-рдУрд╡рд░-рдЬреЗрдбреАрдмреАрд╕реА рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЕрдкрдиреА рдХрдиреЗрдХреНрд╢рди рд╕реАрдорд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдиреЗ JDBCObjectStoreActor рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрднрд┐рдиреЗрддрд╛ рд╕реНрд╡рдпрдВ JDBC рдХреЛ рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЕрдзрд┐рдХ рд╣реИ рдХрд┐ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдкрд░ рдЪрд▓ рд░рд╣реЗ ObjectStore рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╕рдордп рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдореБрдЭреЗ R2DBC рдХреА рдкреВрд░реА рд╕рдордЭ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкреВрд░реНрдг JDBC рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝ рдФрд░ рдПрдордПрд╕ рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рд╕рдордп рдХреЗ рд╕рд╛рде рдмрдврд╝реЗрдЧрд╛ред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ R2DBC рдкрд░ Jdbi рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдХреИрд╕рд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдм рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрджрд░реНрдн рдпрд╣рд╛рдВ рд╣реИ рдЕрдЧрд░ рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрд┐рд╕реА рд╕рдордп рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдХреЛрдИ рддрдирд╛рд╡ рдирд╣реАрдВ рд╣реИ :)

рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбреНрд░рд╛рдЗрд╡рд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рддреЛ рд╢рд╛рдпрдж рдпрд╣рд╛рдБ рдХреБрдЫ рдлрд╛рдпрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ!

рдореИрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдПрдХреНрд╕рдкреНрд▓реЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВ: рдмреЗрдВрдЪрдорд╛рд░реНрдХ, рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛрдб рдХрд╛ рдкреНрд░рдорд╛рдг, рдЖрджрд┐ред рдХреБрдЫ рд╕реАрдорд╛рдПрдВ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИрдВ: рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ r2dbc рдбреНрд░рд╛рдЗрд╡рд░ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП BLOB рдФрд░ CLOB рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ рдЕрднреА рддрдХ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╕рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдпрд╛ CALL рдХреЛрдИ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИред

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

рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВ, рднрд▓реЗ рд╣реА рд╕рдореБрджрд╛рдп рдХреЗ рдЕрдиреНрдп рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд╡реЛрдЯ рд╣реА рдХреНрдпреЛрдВ рди рд╣реЛрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред

рдпрд╣ рдЯрд┐рдХрдЯ рджреЗрдЦрдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ред

рдореИрдВ R2DBC рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛:

  • рдпрд╣ рдЕрднреА рднреА рдПрдХ рдпреБрд╡рд╛ рдкрд╣рд▓ рд╣реИ рдФрд░ рдЬреАрдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмреАрдПрд▓рдУрдмреА/рд╕реАрдПрд▓рдУрдмреА рдФрд░ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд░реНрдерди рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рдиреА рд╣реИрдВред
  • рдбреНрд░рд╛рдЗрд╡рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдФрд░ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдВрдкреВрд░реНрдг I/O рднрд╛рдЧ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд╣реИред рдереНрд░реЗрдб рдкреВрд▓ рдореЗрдВ рдХрд╛рд░реНрдп рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдСрдлрд▓реЛрдбрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред

рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, R2DBC рдХрд╛ рд▓рдХреНрд╖реНрдп рдПрдХ SPI рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреИрд╕реЗ рдХрд┐ рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ R2DBC, R2DBC рдХреНрд▓рд╛рдЗрдВрдЯ (R2DBC SPI рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдЫреЛрдЯрд╛ рдЖрд╡рд░рдг рдЬреЛ jdbi рд╕реЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рдЙрдзрд╛рд░ рджреЗрддрд╛ рд╣реИ) рдФрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдореЗрдВ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдмрд╕ рдореЗрдВ рдЭрдВрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдореЗрд░рд╛ рдореВрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк/рдкреНрд░рджрд░реНрд╢рди рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░рдд, r2dbc-client рдЬреЗрдбреАрдмреАрдЖрдИ рдХреЗ рдПрдкреАрдЖрдИ рдФрд░ рд▓реЛрдХрд╛рдЪрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдЖрдк рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдкрд╛рдПрдВрдЧреЗред

рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдЬреЗрдбреАрдмреАрдЖрдИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП @hgschmie ) рд╕реЗ рдЖрд░рдПрдХреНрд╕ рд╕рд╛рдорд╛рди рдХрд╛ рдкрд░реНрджрд╛рдлрд╛рд╢ рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ R2DBC рдХреЗ рд▓рд┐рдП "рд╕рдорд░реНрдерди" рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдЖрдк JDBI рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ R2DBC рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, JDBi R2DBC Connection s рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, JDBI рдХреЛ Rx рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реИрдк рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╛ ... рдХреБрдЫ рдФрд░?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ

R2DBC JDBC рдХреЗ рд▓рд┐рдП рдПрдХ async рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИред

@brianm R2DBC рдереНрд░реЗрдбрдкреВрд▓ рдкрд░ JDBC рдирд╣реАрдВ рд╣реИред R2DBC рдХрд╛ рдорддрд▓рдм рджреЛ рдЪреАрдЬреЗрдВ рд╣реИрдВ:

  1. R2DBC рдбреНрд░рд╛рдЗрд╡рд░ рдПрдХ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рдкрд░рд┐рд╡рд╣рди рдкрд░рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ I/O-рдмрд╛рдЙрдВрдб рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП org.reactivestreams.Publisher рдкреНрд░рдХрд╛рд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╡реЗ рдиреАрдЪреЗ рдЬреЗрдбреАрдмреАрд╕реА рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡рд╛рдпрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдЦрд░реЛрдВрдЪ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
  2. R2DBC рдПрдХ рдорд╛рдирдХреАрдХреГрдд (рд╡рд┐рдХреНрд░реЗрддрд╛-рд╕реНрд╡рддрдВрддреНрд░) SPI рд╣реИ рдЬреЛ рд╢реАрд░реНрд╖ рдкрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЖрдкрд╕ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЖрдЬ JDBC рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк JDBI рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ R2DBC рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, JDBi R2DBC рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИ

рд╣рд╛рдБ, рдЗрд╕рдХрд╛ рдореВрд▓ рдЕрд░реНрде рдпрд╣реА рд╣реИред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдПрдХреНрдЯрд░/RxJava2/Zerodep рдкреНрд░рдХрд╛рд░ рд▓реМрдЯрд╛рдиреЗ рд╡рд╛рд▓рд╛ R2DBC-рд╡рд┐рд╢рд┐рд╖реНрдЯ JDBI рдореЙрдбреНрдпреВрд▓ рд╣реЛрдирд╛ред

рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╡рд╣реА рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ R2DBC рд╣реИ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИред

рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП "рдЬреЗрдбреАрдмреАрдЖрдИ рд╕рдорд░реНрдерди" рдХреНрдпрд╛ рд╣реИ!

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬреЗрдбреАрдмреАрдЖрдИ рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреЛ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕рдХрд╛ рдПрдХ рдХреЛрдб рдирдореВрдирд╛ рд▓рд┐рдЦреЗрдВ?

рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рд╕рдорд░реНрдерди рдХреИрд╕реЗ рдХрд░реЗрдВ:

Jdbi jdbi = Jdbi.create("r2dbc:h2:mem:///test"); // (H2 in-memory database), obtain ConnectionFactory via ConnectionFactories.get(String url)

// Reactor style:
Flux<User> users = jdbi.withHandle(handle -> {

    return handle.execute("CREATE TABLE user (id INTEGER PRIMARY KEY, name VARCHAR)")

        .then(handle.execute("INSERT INTO user(id, name) VALUES (?0, ?1)", 0, "Alice"))

        .then(handle.createUpdate("INSERT INTO user(id, name) VALUES (?0, ?1)")
            .bind(0, 1)
            .bind(1, "Bob")
            .execute())
         .then(handle.createQuery("SELECT * FROM user ORDER BY name")
              .mapToBean(User.class).many());
});

// RxJava style
Flowable<User> users = jdbi.withHandle(handle -> { тАж });

рдЗрдВрдЯрд░рдлрд╝реЗрд╕-рдЖрдзрд╛рд░рд┐рдд рд╕рдорд░реНрдерди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

public interface UserDao {
    @SqlUpdate("CREATE TABLE user (id INTEGER PRIMARY KEY, name VARCHAR)")
    Completable createTableRxJava();

    @SqlUpdate("CREATE TABLE user (id INTEGER PRIMARY KEY, name VARCHAR)")
    Mono<Void> createTableProjectReactor();

    @SqlQuery("SELECT * FROM user ORDER BY name")
    @RegisterBeanMapper(User.class)
    Flowable<User> listUsersRxJava();

    @SqlQuery("SELECT * FROM user ORDER BY name")
    @RegisterBeanMapper(User.class)
    Flux<User> listUsersProjectReactor();
}

RxJava рдмрдирд╛рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдПрдХреНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд░рд╛рдп рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рджреЛрдиреЛрдВ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред

рдХреНрдпрд╛ рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ?

рдХреНрдпрд╛ R2DBC JDBC рдХреЗ рдКрдкрд░ рдПрдХ рдкрд░рдд рд╣реИ, рдпрд╛ рдЗрд╕рдХреА рдЕрдкрдиреА рдЪреАрдЬрд╝ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдЬреЗрдбреАрдмреАрдЖрдИ рдЪрд░рдо рдореЗрдВ рдЬреЗрдбреАрдмреАрд╕реА рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

R2DBC JDBC рдХреЗ рдКрдкрд░ рдХреА рдкрд░рдд рдирд╣реАрдВ рд╣реИред R2DBC SQL рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз API рд╣реИ рдФрд░ рдпрд╣ рдЕрдкрдиреА рдмрд╛рдд рд╣реИ (R2DBC рдбреНрд░рд╛рдЗрд╡рд░ рдЖрдорддреМрд░ рдкрд░ рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз I/O рдкрд░рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХреНрд░реЗрддрд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рдпрд░-рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ)ред рдпрджрд┐ рдЖрдк рдХрд░реЗрдВрдЧреЗ, рддреЛ R2DBC SQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╣реИред

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

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдкрд╣рд▓рд╛ рдХрджрдо рдПрдХ рдЬреЗрдбреАрдмреАрдЖрдИ рдХрд╛рдВрдЯрд╛ рдпрд╛ рд╢рд╛рдЦрд╛ рдХреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдкреАрдУрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдиреНрдпреВрдирддрдо рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЖрд░ 2 рдбреАрдмреАрд╕реА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╡рд╣рд╛рдВ рд╕реЗ рд╣рдореЗрдВ рдореМрдЬреВрджрд╛ JDBC рд╕рдорд░реНрдерди рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдПрдХреАрдХрд░рдг рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдорд╛рд░реНрдЧ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдХрдард┐рди рдХрд╛рдВрдЯреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдореИрдереНрдпреВ рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬреЗрдбреАрдмреАрд╕реА рдХреЗ рд╕рд╛рде рдХрд╕рдХрд░ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмрджрд▓рдирд╛ рджреЛрдиреЛрдВ рд╣реА рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд░рдбрд╛рд░ рдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ рдЬрд▓реНрджреА рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реЗрдЧрд╛ред

@stevenschlansker рд╣рдо рд╢реБрд░реВ рдореЗрдВ рдмрдирд╛ рд▓рд┐рдпрд╛ рд╣реИ r2dbc-рдЧреНрд░рд╛рд╣рдХ рдХрд┐ JDBI рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛ред рдкреБрд▓ рдЕрдиреБрд░реЛрдз/рдкреАрдУрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдЬреЛ r2dbc рдореЙрдбреНрдпреВрд▓ ( jdbi-r2dbc ) рдХреЛ рдЖрд░2рдбреАрдмреАрд╕реА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдпреЛрдЧрджрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЗрдбреАрдмреАрдЖрдИ рдореЗрдВ рд╡рд╛рдкрд╕ рдирд┐рдореНрди рдХреА рддрд░реНрдЬ рдкрд░ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИ:

ConnectionFactory cf = тАж;

Rdbi rdbi = new Rdbi(cf);

rdbi.inTransaction(handle ->
    handle.execute("INSERT INTO test VALUES ($1)", 100))

    .thenMany(rdbi.inTransaction(handle ->
        handle.select("SELECT value FROM test")
            .mapResult(result -> result.map((row, rowMetadata) -> row.get("value", Integer.class)))))

    .subscribe(System.out::println);

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

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ Rdbi рдПрдкреАрдЖрдИ " Jdbi рд╕реЗ рдЖрдпрд╛ - рдЙрд╕рдореЗрдВ рдЬрдм рдЖрдк jdbi.installPlugin(...).registerRowMapper(...) рддреЛ рдХреЛрдИ рднреА Rdbi рдЙрджрд╛рд╣рд░рдг рдЬреЛ "рдЖрддреЗ рд╣реИрдВ from" рдХрд┐ Jdbi рднреА рдЙрдирдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдорд┐рд▓рддрд╛ рд╣реИред <strong i="11">@SqlUpdate</strong> CompletableFuture<ResultType> doSomeWork(...); рдпрд╛ рдЬреЛ рднреА рдЙрдкрдпреБрдХреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рднреА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

agavrilov76 picture agavrilov76  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

johanneszink picture johanneszink  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jarlah picture jarlah  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mcarabolante picture mcarabolante  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

qualidafial picture qualidafial  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ