Jdbi: рдбреЙрдХреНрд╕ / рдЙрджрд╛рд╣рд░рдг: рд╕реНрдкреНрд░рд┐рдВрдЧ-рдмреВрдЯ рдореЗрдВ jdbi3 рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг (рд░реЗрдкреЛ) рдкреНрд░рджрд╛рди рдХрд░реЗрдВ

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

рдореИрдВ jdbi3 рдХреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ-рдмреВрдЯ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд╕реНрд╡реАрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЯреБрдХрдбрд╝реЗ рдвреВрдВрдврдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдХреНрдпрд╛ рдЬреАрдердм рдкрд░ рдПрдХ jdbi-example-repository рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдореМрдХрд╛ рд╣реИ, рдЬреЛ рд╕рд┐рд░реНрдл рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ jdbi3 рдХреЗ рд╕рд╛рде рд╕реНрдкреНрд░рд┐рдВрдЧ-рдмреВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рд╕реЗрдЯрдЕрдк рдХрд░реЗрдВ?

рдореИрдВ рдЗрд╕рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХрд░реВрдВрдЧрд╛ред рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
/рд╕реЗрдм

doc help wanted improvement

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

рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ jdbi2.x рдХреЗ рд╕рд╛рде рдирд┐рдореНрди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред jdbi3.x рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджреЗрдЦреА рд╣реИред рдпрд╣ рдЬреЗрдбреАрдмреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд▓реЗрдирджреЗрди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╕рдВрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред

рдЕрд╕рд▓ рдореЗрдВ рдЖрдк рдкреНрд░реЙрдХреНрд╕реА рдХреЛ TransactionAwareDataSourceProxy рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ рдФрд░ рдЬреЗрдбреАрдмреАрдЖрдИ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВред (рдореЗрд░реЗ рдкрд╛рд╕ @arteam рдХреЗ рдЙрддреНрддрд░ рд╕реЗ c/

    <strong i="8">@Bean</strong>
    public DataSource dataSource() {
        // From Spring Boot's connection pool configuration;
    }

    <strong i="9">@Bean</strong>
    public TransactionAwareDataSourceProxy txDataSource(DataSource dataSource) {
        return new TransactionAwareDataSourceProxy(dataSource);
    }

    <strong i="10">@Bean</strong>
    public PlatformTransactionManager transactionManager(DataSource dataSource) {
        //not sure if this is needed
        return new DataSourceTransactionManager(dataSource);
    }

    <strong i="11">@Bean</strong>
    public Jdbi createJdbi(TransactionAwareDataSourceProxy dataSource) {
        //note that parameter is TransactionAwareDataSourceProxy instead of plain DataSource
        return Jdbi.create(dataSource);
    }

    <strong i="12">@Bean</strong>
    public UserDao userDao(Jdbi jdbi) {
        return jdbi.onDemand(UserDao.class);
    }

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

рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреА рд▓реЗрди-рджреЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдмрд╕ Jdbi рдФрд░ рдЕрдкрдиреЗ рдбреАрдПрдУ рдХреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    <strong i="7">@Bean</strong>
    public DataSource dataSource() {
        // From Spring Boot's connection pool configuration;
    }

    <strong i="8">@Bean</strong>
    public Jdbi createJdbi(DataSource dataSource) {
        return Jdbi.create(dataSource);
    }

    <strong i="9">@Bean</strong>
    public UserDao userDao(Jdbi jdbi) {
        return jdbi.onDemand(UserDao.class);
    }

рдирдорд╕реНрддреЗ @bastman , @alwins0n #989 рдореЗрдВ рдмреЗрд╣рддрд░ рд╕реНрдкреНрд░рд┐рдВрдЧ рд╕рдкреЛрд░реНрдЯ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗ рд░рд╣рд╛ рд╣реИ - рдХреНрдпрд╛ рдЖрдк рдЕрдм рддрдХ рдЙрдирдХреЗ рдХрд╛рдо рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдФрд░ рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдПрдХреАрдХрд░рдг рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдЖрдк рдХреБрдЫ рдЕрд▓рдЧ рдорд╛рдВрдЧ рд░рд╣реЗ рд╣реИрдВ?

jdbi рдХреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рддреБрдЪреНрдЫ рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдЕрдкрдиреЗ @Configuration рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ @Bean рдПрдиреЛрдЯреЗрдЯ рд╡рд┐рдзрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдПрдХ Jdbi рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ - рдЬреИрд╕рд╛ рдХрд┐ @arteam рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ

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

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдпрд╣ рд╕реНрд╡реАрдХреГрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдореИрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ (2) рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдЯреЛрдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди/рд╕реНрдкреНрд░рд┐рдВрдЧ-рдмреВрдЯ-рд╕реНрдЯрд╛рд░реНрдЯрд░ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЕрдЧрд░ рдЖрдк рдпрд╣реА рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВред (рдпрджрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдХреЛ рдЖрдЬрдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡реНрдпрд╛рдпрд╛рдо рд╣реИ: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-auto-configuration.html )

рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ jdbi2.x рдХреЗ рд╕рд╛рде рдирд┐рдореНрди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред jdbi3.x рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджреЗрдЦреА рд╣реИред рдпрд╣ рдЬреЗрдбреАрдмреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд▓реЗрдирджреЗрди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╕рдВрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред

рдЕрд╕рд▓ рдореЗрдВ рдЖрдк рдкреНрд░реЙрдХреНрд╕реА рдХреЛ TransactionAwareDataSourceProxy рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ рдФрд░ рдЬреЗрдбреАрдмреАрдЖрдИ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВред (рдореЗрд░реЗ рдкрд╛рд╕ @arteam рдХреЗ рдЙрддреНрддрд░ рд╕реЗ c/

    <strong i="8">@Bean</strong>
    public DataSource dataSource() {
        // From Spring Boot's connection pool configuration;
    }

    <strong i="9">@Bean</strong>
    public TransactionAwareDataSourceProxy txDataSource(DataSource dataSource) {
        return new TransactionAwareDataSourceProxy(dataSource);
    }

    <strong i="10">@Bean</strong>
    public PlatformTransactionManager transactionManager(DataSource dataSource) {
        //not sure if this is needed
        return new DataSourceTransactionManager(dataSource);
    }

    <strong i="11">@Bean</strong>
    public Jdbi createJdbi(TransactionAwareDataSourceProxy dataSource) {
        //note that parameter is TransactionAwareDataSourceProxy instead of plain DataSource
        return Jdbi.create(dataSource);
    }

    <strong i="12">@Bean</strong>
    public UserDao userDao(Jdbi jdbi) {
        return jdbi.onDemand(UserDao.class);
    }

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

рдХреНрдпрд╛ рдЖрдк рдкрд╣рд▓реЗ рдмрддрд╛рдП рдЧрдП рдкреАрдЖрд░ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ? рдЬреЗрдбреАрдмреАрдЖрдИ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд "рд▓реЗрди-рджреЗрди рдЬрд╛рдЧрд░реВрдХ" рдХрдиреЗрдХреНрд╢рди рдлреИрдХреНрдЯреНрд░реА рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдПрдХ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред

iirc рд╕рдорд╕реНрдпрд╛ рдмрдиреА рд╣реБрдИ рд╣реИ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдФрд░ рд╣реИрдВрдбрд▓ рд░рд╛рдЬреНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрди-рд╕рд┐рдВрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрд╣ рдбреАрдПрд╕ рдПрдХ рдХрдиреЗрдХреНрд╢рди рджреЗрддрд╛ рд╣реИ (рдЬреЛ рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИ) рдЬреЛ рд▓реЗрдирджреЗрди рдХреЗ рдЕрдВрдд рдореЗрдВ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдмрдХрд┐ рдкреНрд░рдпреБрдХреНрдд рд╣реИрдВрдбрд▓ рдмрдВрдж рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ (рдкреБрдирдГ) рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдкрд░ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕реМрджрд╛ рдХрд╛ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдмрд▓реНрдХрд┐ рдХреЛрдиреЗ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди 99% рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ: рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рд▓реЗрдирджреЗрди рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рдХрдиреЗрдХреНрд╢рди рд╣реИред рдореЗрд░реЗ рдкреАрдЖрд░ рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рд╕рдВрднрд╛рд▓ рд╣реИред

jdbi3 рдХреЛ stringtemplate4 рдФрд░ рд╕рдореВрд╣ рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреЗрдВ https://github.com/jdbi/jdbi/issues/1052
рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рд╕реНрдкреНрд░рд┐рдВрдЧ рдмреВрдЯ 2.0.0 . рдореЗрдВ jdbi3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд░реЗрдкреЛ рдХрдВрдХрд╛рд▓ рдХрд╛ рд▓рд┐рдВрдХ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ

рдЬрдм рдореИрдВ рд╡рд╕рдВрдд рдХреЗ @Transactional рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдХреА рд╕рдорд╛рдзрд╛рди @kaandok рд▓рд╛рдЧреВ, рдореИрдВ рд╡рдЬрд╣ рд╕реЗ рд╣реИрдВрдбрд▓ рдмрдВрдж рдХрд░рдиреЗ рдЬрдм рд╡рд╣рд╛рдБ рдЦреБрд▓рд╛ рд▓реЗрдирджреЗрди рдореМрдЬреВрдж рдЕрдкрд╡рд╛рдж рдирд┐рдореНрди рдорд┐рд▓рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреБрд╢рдВрд╕рд┐рдд/рд▓рд╛рдЧреВ рд╕рдорд╛рдзрд╛рди рд╣реИ?

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

@cengha рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреБрдЫ рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдиреАрдЪреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд░реНрдЧ рд╣реИ:

<strong i="6">@Bean</strong>
public HikariDataSource hikariDataSource() {
    HikariConfig dataSourceConfig = new HikariConfig();
    dataSourceConfig.setDriverClassName(driverClassName);
    dataSourceConfig.setJdbcUrl(jdbcUrl);
    dataSourceConfig.setUsername(username);
    dataSourceConfig.setPassword(password);
    dataSourceConfig.setAutoCommit(true);
    return new HikariDataSource(dataSourceConfig);
}

<strong i="7">@Bean</strong>
public TransactionAwareDataSourceProxy transactionAwareDataSourceProxy(HikariDataSource dataSource) {
    return new TransactionAwareDataSourceProxy(dataSource);
}

<strong i="8">@Bean</strong>
public PlatformTransactionManager platformTransactionManager(HikariDataSource dataSource) {
    return new DataSourceTransactionManager(dataSource);
}

<strong i="9">@Bean</strong>
public Jdbi jdbi(TransactionAwareDataSourceProxy transactionAwareDataSourceProxy) {
    Jdbi jdbi = Jdbi.create(transactionAwareDataSourceProxy);
    jdbi.installPlugin(new SqlObjectPlugin());
    return jdbi;
}

рдпрд╣рд╛рдБ рд╕реЗрд╡рд╛ рдкрд░рдд рд╣реИ

    <strong i="13">@Override</strong>
    <strong i="14">@Transactional</strong>
    public Long createX(X x) {
        Long aLong = XDao.insertX(x);
        if(true) throw new RuntimeException();
        return aLong;
    }

рдЬрдм рдСрдЯреЛ-рдХрдорд┐рдЯ рдХреЛ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓реЗрди-рджреЗрди рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреЛрдИ рд▓реЗрдирджреЗрди рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рд░реЛрд▓рдмреИрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рд░рдирдЯрд╛рдЗрдо рдЕрдкрд╡рд╛рдж рдХреЗ рдмрд╛рдж) рдФрд░ рдЗрд╕рд▓рд┐рдП рдПрдХреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдореИрдВ рд╡рд╕рдВрдд 2.0.3, рдЬреЗрдбреАрдмреАрдЖрдИ 3.0.0-рдмреАрдЯрд╛ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред рдореИрдВ JDBI рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рд╕рдм рдХреБрдЫ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ред

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