ZonedDateTime
рд▓рд┐рдП рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореИрдкрд░ рдореМрдЬреВрдж рд╣реИ рдЬреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ SQL рдХрд╛ TIMESTAMP WITH TIME ZONE
рд╕реАрдзреЗ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдкрд░ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд╝реЛрди-рдЕрд╡реЗрдпрд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдкрд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рдЬреЛ рдЬрд╝реЛрди-рдЕрдирдЬрд╛рди рд╣реИ, рдХрд░рдирд╛ рд╕рд╣реА рдирд╣реАрдВ рд╣реИред
рдЖрдк рд╕рд╣реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рдЬреЗрдбреАрдмреАрд╕реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрдВ рд╕рднреА java.time рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ java.util рдпрд╛ java.sql рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рдирдореЗрдВ рд╕рдордп рдХреНрд╖реЗрддреНрд░/рдСрдлрд╕реЗрдЯ рдбреЗрдЯрд╛ рдХреА рдХрдореА рд╣реИред
рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд╕реЗ, рдХреНрдпрд╛ рдЖрдк рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпреЛрдВрдХрд┐ TIME ZONE рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ TIMESTAMP рдЖрдкрдХреА рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рднрд┐рдиреНрди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпреЛрдВрдХрд┐ TIME ZONE рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ TIMESTAMP рдЖрдкрдХреА рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рднрд┐рдиреНрди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред
рдореЗрдВ рдЬрдирддрд╛ рд╣реБрдБред (рдЕрдиреНрдпрдерд╛ рдмрд╣реБрдд рдорд╛рдирдХ-рдЕрдиреБрдкрд╛рд▓рди рдбреЗрдЯрд╛рдмреЗрд╕ рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рдирд┐рд░рд╛рд╢рд╛ред)
рдЖрдк рд╕рд╣реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рдЬреЗрдбреАрдмреАрд╕реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ JDBI H2 рдХреЗ org.h2.api.TimestampWithTimeZone
рдХреЛ рдЦреАрдВрдЪреЗрдЧрд╛, рдмрд┐рдирд╛ рдореБрдЭреЗ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ, _somehow_ред
рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ TIMESTAMP W/TZ рдорд╛рди рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА "рдкреЛрд░реНрдЯреЗрдмрд▓" (рд╡рд┐рднрд┐рдиреНрди рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ) рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╛рдиреА IMO рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореИрдкрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ZonedDateTime
ред рдЕрдиреНрдпрдерд╛ рдЖрдк рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреА рддрд░рд╣ рд╣реА рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рд╡рд╣ рдирд╣реАрдВ рдЬреЛ рдореИрдВ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ZonedDateTime
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреЗ рдмрдЬрд╛рдп рдРрдк рд╕рд░реНрд╡рд░ рдХреЗ рдЯрд╛рдЗрдордЬрд╝реЛрди рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╡реИрд╕реЗ, рдбреНрд░реЙрдкрд╡рд┐рдЬрд╝рд╛рд░реНрдб JDBI2 рдХреЗ рд▓рд┐рдП рдореИрдкрд░ рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ: https://github.com/dropwizard/dropwizard/blob/master/dropwizard-jdbi/src/main/java /io/dropwizard/jdbi/args/ZonedDateTimeMapper.java
рдпрджрд┐ рдЖрдк H2 рдХреЗ рд╕рд╛рде ZonedDateTime
рдкреНрд░рд╛рдкреНрдд/рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЗрд╕реЗ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ ZonedDateTime рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреЗ рдмрдЬрд╛рдп рдРрдк рд╕рд░реНрд╡рд░ рдХреЗ рдЯрд╛рдЗрдордЬрд╝реЛрди рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИред
@arteam , рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ - рдореИрдВ рд╕рд╣рдордд рд╣реВрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, AFAIR https://github.com/jdbi/jdbi/blob/master/core/src/main/java/org/jdbi/v3/core/mapper/BuiltInMapperFactory.java#L182 H2 рдкрд░ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред TS w TZ, рдХреНрдпреЛрдВрдХрд┐ rs.getTimestamp(..)
рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдЖрдк H2 рдХреЗ рд╕рд╛рде ZonedDateTime рдкреНрд░рд╛рдкреНрдд/рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЗрд╕реЗ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдореИрдВ рдХрд┐рд╕реА рднреА рдкреЛрд░реНрдЯреЗрдмрд▓ рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ - рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ (org.h2.api.TimestampWithTimeZone) rs.getObject(..)
рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдУрд░реЗрдХрд▓ рдпрд╣ рд╕рдорд╛рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдУрд░реЗрдХрд▓-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рдеред
рдЖрдо рддреМрд░ рдкрд░, рдореИрдВ рд╕рд╣реА рдкрд░рд┐рд╡рд░реНрддрди (рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╕реЗ LocalDateTime
) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рджреНрд╡рд╛рд░рд╛ _forced_ рд╣реЛрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ "рдЬрд╝реЛрди-рдЖрдИрдПрдирдЬреА" рдЬреЛрдбрд╝реВрдВрдЧрд╛ред
рдЖрдк рдЕрд╕рд╣рдордд рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреБрд▓рд╛ рд░рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред
рдПрдХ рдЪреАрдЬ рдЬреЛ рд╣рдо рдЕрдкрдиреЗ рд╕реНрдЯреИрдХ рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреЛрд░ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЬрд╛рд╡рд╛ рдХрд╛ рдЯрд╛рдЗрдордЬрд╝реЛрди == рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХрд╛ рдЯрд╛рдЗрдордЬрд╝реЛрди, рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ рд╕рдм рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ рдмреЗрдореЗрд▓ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреА рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ TZ-рд╕рд╣реА рд╣реЛрдиреЗ рдХреЗ рдмреАрдЪ рдПрдХ рдареАрдХ рд╕рдордЭреМрддрд╛ рд╣реЛрдЧрд╛?
рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рдЗрддрдиреА рдЬрд▓реНрджреА рдХреНрдпреЛрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ рд╣реИред
рднрд▓реЗ рд╣реА рд╣рдо рдЗрд╕реЗ рд╕рднреА рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐-рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдкрд░ рдФрд░ рддрд░реНрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рдЬреЛ рдЬреЗрдбреАрдмреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╢рд┐рдк рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдмрд╕ рдПрдХ рдФрд░ рдореИрдкрд░/рддрд░реНрдХ рджрд░реНрдЬ рдХрд░рдХреЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдВрддрд┐рдо рдкрдВрдЬреАрдХреГрдд (рдкреНрд░рддрд┐ рдкреНрд░рдХрд╛рд░) рдЬреАрддрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк PostgresPlugin
рдХреЗ рд╕реНрд░реЛрдд рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ JavaTimeMapperFactory
рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ ResultSet.getObject(Class)
рд▓рд┐рдП LocalDate
, LocalTime
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдореИрдкрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред LocalDateTime
рдФрд░ OffsetDateTime
, рдЬреЛ рд╕реАрдзреЗ Postgres JDBC рдбреНрд░рд╛рдЗрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред
рдпрджрд┐ H2 рдХреЗ рдкрд╛рд╕ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗ рдмрд┐рдирд╛ ZonedDateTime
рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдореИрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП H2DatabasePlugin
рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реВрдВрдЧрд╛ , рдпрд╣рд╛рдВ рдЕрдЪреНрдЫреА рдЪрд░реНрдЪрд╛ рд╣реЛрдиреА рд╣реИ, рдФрд░
рдХреНрдпрд╛ рдореИрдВ рдЗрд╕ рдХреЙрдиреНрд╡реЛ рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ jdbi рдЯреАрдо рдХреЛ рдПрдХ jdbi3-hsqldb рд╕рдмрдкреНрд░реЛрдЬреЗрдХреНрдЯ/рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ/... рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ hsqldb рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдФрд░ рдореИрдкрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдЬреЛ рд╕реАрдзреЗ setObject/getObject рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ java.time рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ) рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреАред рд░реВрдкрд╛рдВрддрд░рдг)?
рдмрд┐рд▓реНрдХреБрд▓ред
рд╕рдЪ рдХрд╣реВрдВ рддреЛ рдореИрдВ @findepi рд╕реЗ рд╕рд╣рдордд
рдореИрдВ рдЯреЗрд╕реНрдЯ рд░рди рдХреЗ рджреМрд░рд╛рди рд░рдирдЯрд╛рдЗрдо рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЬреЗрдбреАрдмреАрдЖрдИ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдореИрдкрд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЦреБрдж рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ-рдЬрдм рдЬреЗрдбреАрдмреАрдЖрдИ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореИрдкрд░ рдЪреБрдкрдХреЗ рд╕реЗ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реАред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝реА рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд╣реИ рдЬреЛ рдбреАрдмреА (рдПрдЪрдПрд╕рдХреНрд▓рдбреАрдмреА) рдФрд░ рдЬреЗрдбреАрдмреАрдЖрдИ рджреЛрдиреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢реБрджреНрдзрддрд╛/рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдкрдврд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд┐рд╕реА рднреА рдореБрджреНрджреЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдбреАрдмреАрдЖрдИ рдореИрдкрд░реНрд╕/рддрд░реНрдХ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЕрдм рдХрдИ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдЪрдПрд╕рдХреНрд▓рдбреАрдмреА рдХреЗ рдкрд╛рд╕ рдореВрд▓ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рдХрд╣рдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж (рд╡рд┐рд╢рд╛рд▓ рдмрдЧ)ред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЬрд╝реЛрди/рдСрдлрд╝рд╕реЗрдЯ рдХреЗ рд╕рд╛рде java.time рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрднреА рдХрд┐рдпрд╛, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд╡реЗ рд╕рднреА рд╕рд┐рд╕реНрдЯрдо рдорд╛рдиреЛрдВ рдкрд░ рдСрдлрд╝рд╕реЗрдЯ/рдЬрд╝реЛрди рд░реАрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреЗрдбреАрдмреАрдЖрдИ рдХреА рдореИрдкрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЗ рд▓рд┐рдП, hsqldb рдмрдЧреНрд╕ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВред
рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЙрди рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рдореИрдкрд░реНрд╕ рдХреЛ jdbi3 рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рд╡рд┐рдХреНрд░реЗрддрд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ (jdbi3-hsqldb рдФрд░ рдЕрдиреНрдп) рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдП, рдЬрд╣рд╛рдВ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдореИрдВ рд╕реНрд╡рдпрдВ jdbi-hsqldb рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдореИрдкрд░ рдФрд░ рддрд░реНрдХ рд▓рд┐рдЦреЗ рд╣реИрдВред
рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╢рд╛рдпрдж рд╕рдордЭрджрд╛рд░ рд░рд╛рд╕реНрддрд╛ рд╣реЛрддрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ v3 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрд┐рд▓реНрд▓реА рдмреИрдЧ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЗрди рдореИрдкрд░ рдпрд╛ рддрд░реНрдХ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛ рдЬреЛ рдЙрди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред
рдпрджрд┐ рдХреЛрдИ рдЙрди рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрднрд░ рд╣реИ (рдЙрдирдХреА рдЦрд╛рдорд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ), рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕ рдкреИрдЪ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реЛрдЧрд╛: рд░реВрдкрд╛рдВрддрд░рдг рдмрд╣реБрдд рдЕрдзрд┐рдХ рдПрдХ-рд▓рд╛рдЗрдирд░ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рджреВрд╕рд░реА рдУрд░ рд░рдЦрдиреЗ рд╕реЗ рдореЗрд░реЗ рдЬреИрд╕реЗ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧ рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ рдЬреЛ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдЬреЛ рд╕рднреА рддрдХрдиреАрдХреА рдЪрд╢реНрдореЗ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ рдЬреИрд╕реЗ рдЬреЗрдбреАрдмреАрд╕реА рдХреЗ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЧреИрд░-рд╕рдорд░реНрдерди рдХреЛ рджрд┐рд▓ рд╕реЗ?) рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдмрд╛рдж рдореЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рдЙрдирдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЧрд▓рдд рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛...
рдореВрд▓ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд░рд╣рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдХрд░ рд╕рдВрднрд╛рд╡рд┐рдд рднрд╡рд┐рд╖реНрдп рдХреА рдХреНрд╖рддрд┐ рдЙрди рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рд╣реБрдИ рдХреНрд╖рддрд┐ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдХрд░ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рд╣реИред
@TheRealMarnes рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдлреАрдЪрд░ рдХреЛ рд╣рдЯрд╛рдирд╛ (рдПрдХ рдмрд╛рд░ рдЬрдм рд╣рдо рд╕рд╣рдордд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рд▓реЛрдЧ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдХреЛ рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ (рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдП рдмрд┐рдирд╛ рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрд╕рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ)ред рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рдпрдореЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдЖрдо рддреМрд░ рдкрд░ рдЖрдк рдЗрд╕реЗ v3 рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкрджрд╛рд╡рдирдд рдХрд░реЗрдВрдЧреЗ (рдпрд╣рд╛рдВ рдмрд╣рд┐рд╖реНрдХрд░рдг рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рдПрдкреАрдЖрдИ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдФрд░ рд▓реЙрдЧрд┐рдВрдЧ рдХреНрдпрд╛ рдмрдЪрд╛ рд╣реИ) рдФрд░ v4 рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ , рд▓реЛрдЧреЛрдВ рд╕реЗ рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯреНрд╕ / рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЧрд╛рдЗрдб рдкрдврд╝рдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдирд╛ред
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рдорд╛рдзрд╛рди рд╣рдореЗрд╢рд╛ рдХрд┐рд╕реА рдХреЛ рджреБрдЦреА рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрдд рд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдмреЗрд╣рддрд░ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд▓реЛрдЧреЛрдВ рд╕реЗ рд░рд┐рд▓реАрдЬ рдиреЛрдЯреНрд╕/рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЧрд╛рдЗрдб рдкрдврд╝рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рдирд╛ рдЕрдиреБрдЪрд┐рдд рд╣реИ... рд░рдЦрд░рдЦрд╛рд╡ рдФрд░ рдорд╛рдореВрд▓реА рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓реЗрдХрд┐рди рдПрдХ рдмрдбрд╝реЗ рдЕрдкрдбреЗрдЯ рдХреЗ рд╕рд╛рде рдирд╣реАрдВред Jdbi3 рд╣реА рдирдИ рдЧрд╛рдЗрдб рдХреЛ рдкрдврд╝реЗ рдмрд┐рдирд╛ jdbi2 рд╕реЗ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкрдпреЛрдЧреА рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЙрди рдореИрдкрд░реНрд╕/рддрд░реНрдХреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдкреАрдЫреЗ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реВрдВ, рдмрд╢рд░реНрддреЗ рдЙрдиреНрд╣реЗрдВ рдмрд╣рд╛рд▓ рдХрд░рдирд╛ рдПрдХ-рд▓рд╛рдЗрдирд░ рдерд╛ - рд╢рд╛рдпрдж рдЙрди рдореИрдкрд░реНрд╕ рдХреЛ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВ?
рдПрдХ рдЧреИрд░-рд╡рд┐рдХреНрд░реЗрддрд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ jdbi3-core-experimental
?
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореЗрд░рд╛ рдмреБрд░рд╛, рдЖрдкрдХрд╛ рдорддрд▓рдм jdbi.installPlugin(new ExperimentalMappersPlugin())
рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 'рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ' рдирд╣реАрдВ рд╣реИрдВред
TimezoneInрд╕рдВрд╡реЗрджрдирд╢реАрд▓JavaTimeMappers рддрдм :P
рдпрд╣ рд╕рд┐рд░реНрдл рдореИрдкрд░ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рддрд░реНрдХ рдХрд╛рд░рдЦрд╛рдиреЗ рднреА рд╣реИрдВред
JavaTimeYoloTZPlugin
рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ: рдкрд▓рдХ:
рднрд▓реЗ рд╣реА рд╣рдо рдЗрд╕реЗ рд╕рднреА рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐-рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@qualidafial рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕реАрдЦрд╛ рд╣реИ рдХрд┐ Java8 рдХреЗ рдмрд╛рдж рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рджрд┐рдирд╛рдВрдХ/рд╕рдордп рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрднрд░рддрд╛ рд╣реБрдЖ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рдирдХ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдереЛрдбрд╝рд╛ рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐:
TIMESTAMP WITH TIME ZONE
рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣ рдореБрджреНрджрд╛ рдмрдирд╛рдпрд╛ рд╣реИ ZonedDateTime
, рдЬреЛ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИTIMESTAMP
, DATE
, TIME
рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛рдиреА java.sql.{Timestamp,Date,Time}
рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рд╕рднреА рд╡рд░реНрдЧ java.util.Date
рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИрдВред рдХрд┐рд╕реА рдХреЛ рдпрд╛рдж рд╣реИ рдХрд┐ рдХреИрд╕реЗ Calendar
рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ java.util.Date
рдХреА рд╕рд╛рд▓/рдорд╣реАрдиреЗ/рджрд┐рди/рдШрдВрдЯрд╛/рдорд┐рдирдЯ/рд╕реЗрдХрдВрдб рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛? рдПрдХ рдЕрдЪреНрдЫреЗ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП (рдФрд░ рдореЗрд░рд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ Calendar
рдиреЗ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛)редjava.sql.Timestamp
рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддреЛ рдпреВрдПрд╕ рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдРрдк рдХреБрдЫ рд╕рд╛рдЭрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ 2017-03-26 02:30:00
(рдЬрд╝реЛрди рдХреЗ рдмрд┐рдирд╛!) рдХрд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдорд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпреВрд░реЛрдк рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рдПрдХ рдРрдк (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Europe/Berlin
JVM рдЬрд╝реЛрди рдХреЗ рд░реВрдк рдореЗрдВ) рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЗрд╕ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╕рдордп рдпреВрд░реЛрдк рдореЗрдВ рдбреАрдПрд╕рдЯреА рдерд╛редjava.sql.Date
рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╡рд░реНрдЧ рд╣реИред java.sql.Date
рддрд╛рд░реАрдЦ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдЖрдзреА рд░рд╛рдд рдХреЛ java.sql.Timestamp
рдерд╛, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЖрдзреА рд░рд╛рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдордзреНрдпрд░рд╛рддреНрд░рд┐ рдореЗрдВ (рдпрд╛ рддреЛ рд╡рд░реНрддрдорд╛рди рдпрд╛ рдЕрддреАрдд рдореЗрдВ) рдбреАрдПрд╕рдЯреА рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВредjava.sql.Time
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдореБрдХреНрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ 1970-01-01 рдХреЛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рд╕рдордп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ? рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕реЗ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ рдЬреЛ рдЙрд╕ рддрд┐рдерд┐ рдкрд░ рдиреАрддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрдЪреНрдЫреЗ рдереЗ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП America/Bahia_Banderas
, America/Hermosillo
)ред рдпрджрд┐ рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ JVM рдПрдХ рд╣реИ, рддреЛ JDBC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд TIME
рдорд╛рдиреЛрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛редрдЬреЗрдбреАрдмреАрд╕реА рдкреБрд░рд╛рдиреЗ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдирдИ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдПрдХ рдЧреИрд░-рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рдЧрд▓рдд рд╣реИ:
resultSet.getTimestamp(col).toLocalDateTime()
~resultSet.getDate(col).toLocalDate()
~resultSet.getTime(col).toLocalTime()
~рдпрд╣ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рддрд╛рд░реАрдЦ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдЕрдЧрд░ JVM рдХреНрд╖реЗрддреНрд░ Pacific/Apia
рдФрд░ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рддрд┐рдерд┐ 2011-12-30
;)
рдЕрдм, рдЙрднрд░рддреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдПред ResultSet
рдореЗрдВ рдпрд╣ рдХрдо рд▓реЛрдХрдкреНрд░рд┐рдп API рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк JDBC рдбреНрд░рд╛рдЗрд╡рд░ рд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ:
resultSet.getObject(col, LocalDateTime.class) // for TIMESTAMP
resultSet.getObject(col, LocalDate.class) // for DATE
resultSet.getObject(col, LocalTime.class) // for TIME
resultSet.getObject(col, ZonedDateTime.class) // for TIMESTAMP WITH TIME ZONE
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ PostgreSQL, MySQL, Oracle рдФрд░ H2 рдХреЗ рд▓рд┐рдП JDBC рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдФрд░, рдЬрд╛рджреВ, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд "рдЬреЗрд╡реАрдПрдо рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡" рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред
рднрд▓реЗ рд╣реА рдпрд╣ рд░реВрдкрд╛рдВрддрд░рдг рдЕрднреА рддрдХ SQL рд╕рд░реНрд╡рд░ рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЬрд╛рд╡рд╛ рдЯрд╛рдЗрдо рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП _the_ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореИрдкрд┐рдВрдЧ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЬреЗрдбреАрдмреАрдЖрдИ рдЬрд╣рд╛рдЬреЛрдВред
рдзреНрдпрд╛рди рджреЗрдВ:
рдЬреЗрдбреАрдмреАрд╕реА 4.2 рд╕реНрдкреЗрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд▓реНрдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ PreparedStatement.setObject
рдФрд░ RowSet.setObject
рдЬрд╛рд╡рд╛ рдЯрд╛рдЗрдо рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВ, рдЗрд╕рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЛ рдЗрди рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ! рдореЗрд░реА рдореБрдЦреНрдп рдЪрд┐рдВрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЧреВрдврд╝ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд░рд┐рд▓реАрдЬ рдиреЛрдЯреНрд╕ рдкрд░ рдЙрдЪрд┐рдд рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╣рдо рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдирд╛рдо рдкрд░ рдЗрд╕ рдЫреЛрдЯреЗ рд╕реЗ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд░ рд╕рдХреЗрдВ ...
@stevenschlansker рдЖрдк рд╕рд╣реА рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ JDBI рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдЖрдЗрдП рдЗрд╕реЗ рдПрдХ рдЫреЛрдЯреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд░рдЦреЗрдВ, рд╣рдордиреЗ рдЕрднреА 3 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЧрд▓рдд рдорд╛рдирддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╣реИ ...;)
рдореИрдВ рдЬреЛ рд╕реБрди рд░рд╣рд╛ рд╣реВрдВ рдЙрд╕реЗ рд╡рд╛рдкрд╕ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП:
YoloTimePlugin
)ResultSet.getObject(column, type)
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВредрдореИрдВ рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВред
рд╣рдордиреЗ рдЕрднреА рднреА рдЗрди рджрд┐рдирд╛рдВрдХ/рд╕рдордп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИред рд╣рдо рдЬреЛ рдХреБрдЫ рднреА рдореИрдкрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ _out of_ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣рдо рджрд┐рдирд╛рдВрдХ/рд╕рдордп рддрд░реНрдХ _into_ SQL рдХрдердиреЛрдВ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рддреЗ рд╣реИрдВред
рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдореИрдкрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдЬреЛ рдХреБрдЫ рднреА рдмрджрд▓рддреЗ рд╣реИрдВ, рдЙрд╕реЗ рдЙрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣рдо рджрд┐рдирд╛рдВрдХ/рд╕рдордп рддрд░реНрдХреЛрдВ рдХреЛ SQL рдХрдердиреЛрдВ рдореЗрдВ рдмрд╛рдБрдзрддреЗ рд╣реИрдВред
@qualidafial , рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╕рд╡рд╛рд▓ред рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЬреЗрдбреАрдмреАрд╕реА 4.2 рд╕реНрдкреЗрдХ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП _рд╕рд┐рд░реНрдл рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПтДв_ред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЬреЗрдбреАрдмреАрд╕реА 4.2 рд╕реНрдкреЗрдХ рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП _рд╕рд┐рд░реНрдл рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПтДв_ред
рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ JDBC рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХрд░реНрддрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд▓реНрдкрдирд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЕрднреА рддрдХ рдмрдЧ рдХреЗ рдмрд┐рдирд╛ рдЬреЗрдбреАрдмреАрд╕реА рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдореИрдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рдкреНрд▓рдЧрдЗрдиреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдмрд╣реБрдд рдмреЛрдЭрд┐рд▓ рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛рдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд░реНрдерди рд╣реИрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЕрдзрд┐рдХ рдЦрд╛рд▓реА рд╕реНрд▓реЗрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдЖрдк рдПрдХ рдЬреЗрдбреАрдмреАрдЖрдИ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдореИрдкрд░ рдкреНрд░реАрдЗрдВрд╕реНрдЯреЙрд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдХреЛрд░ рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рд╡рд┐рднрд┐рдиреНрди рдореИрдкрд░реНрд╕ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рдореЗрдВ рдПрдХ рд╣реА рдбреЗрдЯрд╛рдЯрд╛рдЗрдк рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реНрдХ рд╣реЛрддреЗ рд╣реИрдВ - рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ / setObject, get/setX, рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг, рдЖрджрд┐ред рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд▓рд┐рдП рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ (рд╕рдВрд╕реНрдХрд░рдг) рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдореИрдкрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдЪреЗрдХ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЬреЗрдбреАрдмреАрдЖрдИ рдореЗрдВ рдХреБрдЫ рдореИрдкрд░реНрд╕ рдкреНрд░реАрдЗрдВрд╕реНрдЯреЙрд▓реНрдб рд╣реИрдВ рдЬреЛ рдореЗрд░реЗ рдбреАрдмреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдЕрднреА рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рддрд░реНрдХ/рдореИрдкрд░ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдЬреЛ рдПрдХ рдЕрд╕рдорд░реНрдерд┐рддрдСрдкрд░реЗрд╢рди рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдмреЗрд╣рддрд░ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рд╣реИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред
рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ рдЬреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдбреАрдмреА рдХреЗ рд╕рд╛рде рдЕрдВрддрд░рдВрдЧ рд╣реЛрдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ рдЬреЛ рдЬрд╕реНрдЯ рд╡рд░реНрдХ тДв рдореЗрдВ рд╕рд╛рдорд╛рди рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд░рддрд╛ рд╣реИ):
рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдореИрдВ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рд╣реВрдВ ... hsqldb рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрд┐рдВрджреБ рдЬрд╣рд╛рдВ рд╡реЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЪрд╢реНрдореЗ рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ (рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЧрдИ рдФрд░ рд╕реНрд░реЛрдд рдореЗрдВ рддрдп рдХреА рдЧрдИ, рдЕрднреА рднреА рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрдпрддрди рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ), рдФрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдорд╛рдирдЪрд┐рддреНрд░рдг рддрд░реНрдХ рдХреЛ рд╕реНрд╡рдпрдВ рдвреВрдВрдврдХрд░ рдЙрди рдЕрдкреВрд░реНрдгрддрд╛рдУрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ред
// I want strings handled differently
<strong i="13">@Component</strong>
public class CleanStringArgumentFactory extends AbstractArgumentFactory<String> {
protected CleanStringArgumentFactory() {
super(Types.VARCHAR);
}
<strong i="14">@Override</strong>
protected Argument build(String value, ConfigRegistry config) {
return (position, statement, ctx) -> statement.setString(position, StringUtils.trimToNull(value));
}
}
// no need for jdbi's built-in logic
<strong i="17">@Component</strong>
public class SetObjectArgumentFactory implements ArgumentFactory {
private static final Set<Type> SUPPORTED = ImmutableSet.of(UUID.class, LocalDateTime.class);
<strong i="18">@Override</strong>
public Optional<Argument> build(Type type, Object value, ConfigRegistry config) {
return SUPPORTED.contains(type)
? Optional.of(new LoggableArgument(value, (position, statement, context) -> statement.setObject(position, value)))
: Optional.empty();
}
}
// these built-ins don't work and I don't need them anyway
<strong i="21">@Component</strong>
public class UnsupportedArgumentFactory implements ArgumentFactory {
private static final Set<Type> UNSUPPORTED = ImmutableSet.of(ZonedDateTime.class, OffsetDateTime.class, OffsetTime.class);
<strong i="22">@Override</strong>
public Optional<Argument> build(Type type, Object value, ConfigRegistry config) {
if (UNSUPPORTED.contains(type)) {
throw new UnsupportedOperationException(type.getTypeName() + " is not supported at the moment");
} else {
return Optional.empty();
}
}
}
// voodoo
<strong i="25">@Inject</strong>
public JdbiConfiguration(
@Named("dataSource") DataSource dataSource,
Set<ArgumentFactory> arguments,
Set<ColumnMapper> mappers,
Set<ColumnMapperFactory> mapperFactories
) {
jdbi = Jdbi.create(dataSource);
jdbi.clearMappings();
jdbi.installPlugin(new SqlObjectPlugin());
arguments.forEach(jdbi::registerArgument);
mapperFactories.forEach(jdbi::registerColumnMapper);
mappers.forEach(jdbi::registerColumnMapper);
// ...
// Jdbi instance fine-tuned for my exact database and demands, without surprises and at my own responsibility
рд╣рд╛рдЙрдмреМрдбрд╛? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рдПрдХ SetObjectArgumentFactory рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЗрд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХрдИ рдбреЗрдЯрд╛рдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рдореИрдкрд┐рдВрдЧ рддрд░реНрдХ рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрджрд▓рд╛рд╡, рдЬрд╣рд╛рдВ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдпреЛрдЧреНрдп рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рдеред рд╕рдм рдЦреБрд╢ред рдпрд╣ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдХреБрдЫ рдХрд╛рдо рд▓реЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЗрдбреАрдмреАрдЖрдИ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореИрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдореЗрд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдореИрдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рдкреНрд▓рдЧрдЗрдиреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдмрд╣реБрдд рдмреЛрдЭрд┐рд▓ рд╣реЛрдЧрд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдбреЗрдЯрд╛рдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд░реНрдерди рд╣реИрдВред
рдореБрдЭреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред рдПрдХ рдЖрдУ, рд╕рднреА рдЖрдУ: рдпрджрд┐ рдЖрдкрдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд┐рдХреНрд░реЗрддрд╛ рдпрд╛ рдЙрд╕рдХреЗ JDBC рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП Jdbi рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ/рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╛ рдмреЗрд╣рддрд░ рдЕрднреА рддрдХ, рд╣рдо рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдЪрд╛рд╣рддреЗ рд╣реИрдВ! :)
рдмреЛрдирд╕ рдЕрдВрдХ рдпрджрд┐ рдЖрдкрдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реАрдзреЗ TravisCI рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рддреЛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ: https://docs.travis-ci.com/user/database-setup/
рдЖрдкрдХреЗ "рд░рд┐рдХреНрдд рд╕реНрд▓реЗрдЯ" рд╕реБрдЭрд╛рд╡ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореБрдЭреЗ рдХреЗрд╡рд▓ рдорд╛рдореВрд▓реА рдЖрдкрддреНрддрд┐рдпрд╛рдВ рд╣реИрдВ:
clearMappings()
рд╡рд┐рдзрд┐ рдХреЛ рд╕реАрдзреЗ RowMappers
, ColumnMappers
, Arguments
, рдФрд░ JdbiCollectors
рдХреЙрдиреНрдлрд┐рдЧ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп Jdbi
рдкрд░ рд░рдЦреВрдВрдЧрд╛ clear()
рдирд╛рдо рджреВрдВрдЧрд╛ред@jdbi/рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛ рдХрд┐рд╕реА рдФрд░ рдХреЛ рддреМрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рдкрд╕рдВрдж рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдЧрд▓рддреА рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореИрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд░рд┐рдХреНрдд рд╕реНрд▓реЗрдЯ рд╡рд┐рдЪрд╛рд░ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ред рдореЗрд░реЗ рдкрд╛рд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЗрдореНрдкреНрд▓рд╛рдВрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ NotImplementedException рд╣реЛрдЧрд╛ред рдЕрдВрддрд┐рдо рдЬреАрдд рдЕрдЪреНрдЫреА рд╣реЛрддреА рд╣реИ рдФрд░ рд╕рднреА, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рди рд▓реЛрдЧреЛрдВ рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдХреЛрдИ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рджрд░реНрдж рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рд▓реЛрдЧ рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдиреЛ-рдбрд┐рдлреЙрд▓реНрдЯ рддрд░реАрдХрд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдореМрдЬреВрджрд╛ рдореИрдкрд░реНрд╕ рдХреЛ рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╣рдо рдПрдХ рд╕реНрд╡рдЪреНрдЫ рд╕реНрд▓реЗрдЯ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдореИрдкрд░реНрд╕ рдФрд░ рдмрд╛рдЗрдВрдбрд░реЛрдВ рдХреЛ рдЙрдЪрд┐рдд Plugin
рд╡рд┐рдЦрдВрдбреВ, PrimitivesPlugin
, BoxedPrimitivesPlugin
, CollectionsPlugin
, рдЬреЛ рднреА рд╣реЛ, рдореЗрдВ рдмрдВрдбрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдлрд┐рд░, рд╣рдо "рдмреЗрд╕" рдЬреЗрдбреАрдмреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдПрдХ рдирдпрд╛ рдХрд╛рд░рдЦрд╛рдирд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдореМрдЬреВрджрд╛ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ WholeJdbiEnchiladaPlugin
рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рдХреБрдЫ рд╣рдж рддрдХ 'рд╕реНрдкрд╖реНрдЯ' рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реВрдВ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ - рдореБрдЭреЗ рдПрдХ рдХреЛрдб рдЧрдВрдз рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред
рдореИрдВ рдХреБрдЫ рд╣рдж рддрдХ 'рд╕реНрдкрд╖реНрдЯ' рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реВрдВ рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ - рдореБрдЭреЗ рдПрдХ рдХреЛрдб рдЧрдВрдз рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред
рдареАрдХ рд╣реИ рдЕрдЧрд░ рдЖрдк рдПрдХ рдЕрд▓рдЧ рдиреЛ-рдкреНрд░реАрдХреЙрдиреНрдлрд┐рдЧ рдЬреЗрдбреАрдмреАрдЖрдИ рдлреИрдХреНрдЯреНрд░реА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕реНрдкрд╖реНрдЯ() рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рд╕рдордЭреМрддреЗ рдореЗрдВ рд╣реИрдВ, рдореИрдВ рд╕рд┐рд░реНрдл clear()
рд╢реИрд▓реА рдкрд░ рдПрдХ рдирдИ "рдХреНрд▓реАрди" рдлреИрдХреНрдЯреНрд░реА рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡реНрдпрдХреНрдд рдХрд░ рд░рд╣рд╛ рдерд╛ред
рддреЛ, рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рд╕рднреА рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ? рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЛрдЬрдирд╛ рдмрд╣реБрдд рд╕реЗрдХреНрд╕реА рд▓рдЧрддреА рд╣реИред
Jdbi
рдиреЛ-рдбрд┐рдлреЙрд▓реНрдЯ рдмрдирд╛рдПрдВ (рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рд╣рд░ рдЪреАрдЬ рдкрд░ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИ)PrimitivesPlugin
, BoxedPrimitivesPlugin
, рдЖрджрд┐), рдкреНрд▓рдЧрдЗрди рдмрдВрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдПрдВUTCJavaTimePlugin
рдмрдирд╛рдо LocalJavaTimePlugin
рдмрдирд╛рдо ConvertJavaTimeToUtilDatePlugin
, GetObjectMapper.forClasses(Class... cs)
, SetObjectArgumentFactory.forClasses(Class... cs)
, NullsToDefaultsPrimitivesPlugin
рдмрдирд╛рдо NullThrowsExceptionPrimitivesPlugin
) рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рддрд░рд╣ (рдкреНрд▓рдЧрдЗрдиреНрд╕ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ) рдмреЗрдирдХрд╛рдм рдХрд░реЗрдВ, рддрд╛рдХрд┐ рд▓реЛрдЧ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреБрд▓ рд╡рд╛рдВрдЫрд┐рдд рдореИрдкрд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдХреА рд░рдЪрдирд╛ рдХрд░ рд╕рдХреЗрдВ, рдХреЗрд╡рд▓ рд╡рд╣реА рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореИрдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдЬреИрд╕реЗ рдЕрд╡реИрдз рдирд▓ рдпрд╛ рд▓рд╛рдкрддрд╛ рдЯрд╛рдЗрдордЬрд╝реЛрди рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд░рдгрдиреАрддрд┐рдпрд╛рдБ, рдФрд░ рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╕рдорд╛рдирддрд╛рдПрдБJdbi
рдФрд░ рдЙрдирдХреЗ рдбреАрдмреА рдХреЗ рд▓рд┐рдП рдПрдХ-рдкрдВрдХреНрддрд┐ рд╕реНрдерд╛рдкрд┐рдд рдЕрдЪреНрдЫреА рдореИрдкрд┐рдВрдЧ рдпреЛрдЬрдирд╛рдПрдВ ( HsqlDb2_4_0Plugin
), рдлрд┐рд░ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рдеBuiltInGenericPreconfigurationPlugin
) рдХреЛ рдиреЛ-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдлрд╝реИрдХреНрдЯрд░реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рднреА рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрдд рдмрдирд╛рддреЗ рд╣реИрдВред
Jdbi
рдиреЛ-рдбрд┐рдлреЙрд▓реНрдЯ рдмрдирд╛рдПрдВ
рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рдордЬрдмреВрдд рд░рд╛рдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рд╕реЗ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рднрд┐рдиреНрди рдореИрдкрд┐рдВрдЧ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рдирдХрд╛ рд╡реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреБрдХреНрдд рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдХрдард┐рди рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдЯреЗрдореНрдкреЛрд░рд▓ рдЦреЗрд▓ рдореЗрдВ рд╣реЛрдВ - рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╕рдордЭрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рднрд┐рдиреНрди рдореИрдкрд┐рдВрдЧ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рдирдХрд╛ рд╡реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреБрдХреНрдд рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
рдирд╣реАрдВ, рдХреЗрд╡рд▓ рдЕрдЧрд░ рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореМрдЬреВрджрд╛ рдлрд╝реИрдХреНрдЯрд░реА рд╡рд┐рдзрд┐рдпрд╛рдБ рдареАрдХ рдЙрд╕реА рдкреНрд░реАрдЗрдВрд╕реНрдЯреЙрд▓реНрдб рдореИрдкрд░ рдХреЗ рд╕рд╛рде Jdbi
рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддреА рд░рд╣реЗрдВрдЧреА рдЬреЛ рд╡реЗ рдЕрднреА рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ DIY рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝реИрдХреНрдЯрд░реА рд╡рд┐рдзрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЬреЛ рд▓реЛрдЧ рдЙрдиреНрд╣реЗрдВ рдЪреБрдирддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдореИрдкрд┐рдВрдЧ рдХреА рдЕрдВрддрд░рдВрдЧрддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдПрдХ рдмреАрдЪ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рднреА рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдПрдХ DIY рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдмрд╕ YourDbAndVersionPlugin
рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддрд╛ рд╣реИ рдЙрд╕рдХреЗ рд╕рд╛рде рд░реЛрд▓ рдХрд░реЗрдВред рдореЗрд░реА рд▓рдВрдмреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЬреНрдпрд╛рджрд╛рддрд░ рдЬреЗрдбреАрдмреАрдЖрдИ рдЖрдВрддрд░рд┐рдХ рдФрд░ рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧ рдереА, рдЖрдзрд╛рд░ рд░реЗрдЦрд╛ рдирд╣реАрдВред
TLDR: рдЖрдк рдЕрднреА рднреА Jdbi.create(dataSource)
рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реВрдЯ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА рдЬреЛ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдХреЛрдИ рдФрд░ рдмрд╕ Jdbi.createBlank(dataSource).install(x).install(y).install(z)...
. рдХрд╛ рдЪреБрдирд╛рд╡ рдХрд░реЗрдЧрд╛
рдореИрдВ рдмреЛрд░реНрдб рдкрд░ рд╣реВрдВ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдореЗрдВ рдореМрдЬреВрджрд╛ рдХрд╛рд░рдЦрд╛рдиреЛрдВ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ "рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░" рд╡реНрдпрд╡рд╣рд╛рд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред
рдХрд╛рдлреА рдЙрдЪрд┐рдд
@TheRealMarnes рдпрд╣ рдкреВрд░реА рдмрд╛рддрдЪреАрдд JSR-310 рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдИ рдЬреЛ рд╕реАрдзреЗ JDBC рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧрд▓рдд java.time рдореИрдкрд░реНрд╕ рдФрд░ рддрд░реНрдХреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрд┐рд▓реНрдЯ рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдо рд╕рд╣рдорддрд┐ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдЕрднреА рднреА рдЗрд╕рдХрд╛ рдкреАрдЫрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдмрд╕ java.time рд╡рд╛рд▓реЗ? рдПрдХ рдЬрд╛рд╡рд╛рдЯрд╛рдЗрдо рдкреНрд▓рдЧрдЗрди?
рд╣рд╛рдВ, рдХреЗрд╡рд▓ java.time рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╛рдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рддрд░реНрдХ рдФрд░ рдореИрдкрд░ рдЕрдиреБрднрд╡рд╣реАрди, рд╣рд╛рдирд┐рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ @findepi рд╡рд░реНрдгрд┐рдд рд╣реИред
SimplisticJavaTimePlugin
?
рдЗрд╕рдХреЗ рд╕рд╛рде рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЬрдм рддрдХ рдореЗрд░реЗ рдЕрдиреНрдп рдкреАрдЖрд░ рдХрд╛ рдзреНрдпрд╛рди рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛... рдпрд╣ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╕рдЪ рдХрд╣реВрдВ рддреЛ рдореИрдВ @findepi рд╕реЗ рд╕рд╣рдордд
рдореИрдВ рдЯреЗрд╕реНрдЯ рд░рди рдХреЗ рджреМрд░рд╛рди рд░рдирдЯрд╛рдЗрдо рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЬреЗрдбреАрдмреАрдЖрдИ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдореИрдкрд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЦреБрдж рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ-рдЬрдм рдЬреЗрдбреАрдмреАрдЖрдИ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдореИрдкрд░ рдЪреБрдкрдХреЗ рд╕реЗ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ рдореЗрд░реА рдЬрд╛рдирдХрд╛рд░реАред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝реА рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд╣реИ рдЬреЛ рдбреАрдмреА (рдПрдЪрдПрд╕рдХреНрд▓рдбреАрдмреА) рдФрд░ рдЬреЗрдбреАрдмреАрдЖрдИ рджреЛрдиреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢реБрджреНрдзрддрд╛/рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдкрдврд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд┐рд╕реА рднреА рдореБрджреНрджреЗ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдбреАрдмреАрдЖрдИ рдореИрдкрд░реНрд╕/рддрд░реНрдХ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЕрдм рдХрдИ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдЪрдПрд╕рдХреНрд▓рдбреАрдмреА рдХреЗ рдкрд╛рд╕ рдореВрд▓ рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред рдРрд╕рд╛ рдХрд╣рдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж (рд╡рд┐рд╢рд╛рд▓ рдмрдЧ)ред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЬрд╝реЛрди/рдСрдлрд╝рд╕реЗрдЯ рдХреЗ рд╕рд╛рде java.time рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрднреА рдХрд┐рдпрд╛, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд╡реЗ рд╕рднреА рд╕рд┐рд╕реНрдЯрдо рдорд╛рдиреЛрдВ рдкрд░ рдСрдлрд╝рд╕реЗрдЯ/рдЬрд╝реЛрди рд░реАрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреЗрдбреАрдмреАрдЖрдИ рдХреА рдореИрдкрд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЗ рд▓рд┐рдП, hsqldb рдмрдЧреНрд╕ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВред
рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЙрди рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рдореИрдкрд░реНрд╕ рдХреЛ jdbi3 рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рд╡рд┐рдХреНрд░реЗрддрд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ (jdbi3-hsqldb рдФрд░ рдЕрдиреНрдп) рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдП, рдЬрд╣рд╛рдВ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдореИрдВ рд╕реНрд╡рдпрдВ jdbi-hsqldb рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдореИрдкрд░ рдФрд░ рддрд░реНрдХ рд▓рд┐рдЦреЗ рд╣реИрдВред