рдкреНрд░рд╕реНрддреБрдд рд╣реИ рд╕реНрдкреНрд░рд┐рдВрдЧ рдбрд╛рдЯрд╛ JDBC

рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ, рдХреЛрдбрд▓реЗрд╕ рд▓рд╡рд▓реЗрд╕, рд╣рдо рдПрдХ рдирдпрд╛ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ: рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ JDBC ред


рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ JDBC рдХреЗ рдкреАрдЫреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЬреЗрдкреАрдП рдХреА рд╕рднреА рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред


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


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


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


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


рдЙрджрд╛рд╣рд░рдг


рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрдХрд╛рдИ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


class Customer { @Id Long id; String firstName; LocalDate dob; } 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдЧреЗрдЯрд░реНрд╕ рдпрд╛ рд╕реЗрдЯрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдмреЗрд╢рдХ, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдПрдХ рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ Id рдПрдиреЛрдЯреЗрд╢рди (рд▓реЗрдХрд┐рди рдЕрд░реНрдерд╛рддреНред org.springframework.data.annotation.Id , рдирд╣реАрдВ javax.persistence one ) рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдлрд╝реАрд▓реНрдб рдХреА javax.persistence one ред

рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ CrudRepository рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред


 interface CustomerRepository extends CrudRepository<Customer, Long> {} 

рдЕрдВрдд рдореЗрдВ, рдЖрдкрдХреЛ ApplicationContext рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдкрдиреЗ рдЖрдк рдмрди рдЬрд╛рдП:


 @Configuration @EnableJdbcRepositories (1) public class CustomerConfig extends JdbcConfiguration { (2) @Bean NamedParameterJdbcOperations operations() { (3) return new NamedParameterJdbcTemplate(dataSource()); } @Bean PlatformTransactionManager transactionManager() { (4) return new DataSourceTransactionManager(dataSource()); } @Bean DataSource dataSource(){ (5) return new EmbeddedDatabaseBuilder() .generateUniqueName(true) .setType(EmbeddedDatabaseType.HSQL) .addScript("create-customer-schema.sql") .build(); } } 

рдЖрдЗрдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред


  1. EnableJdbcRepositories рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдирд┐рд░реНрдорд╛рдг рдХреЛ EnableJdbcRepositories ред рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдо рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреНрд▓рд╛рд╕ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
  2. рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд░реНрдЧ JdbcConfiguration рд╡рд┐рд╕реНрддрд╛рд░ JdbcConfiguration , рдХрдИ рдмреАрдиреНрд╕ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ JDBC рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдУрд╡рд░рд▓реИрдк рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред
  3. рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХ NamedParameterJdbcOperations , рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  4. рдПрдХ рд▓реЗрди-рджреЗрди рдкреНрд░рдмрдВрдзрдХ, рд╕рдЦреНрддреА рд╕реЗ рдмреЛрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рдХреЛрдИ рд▓реЗрдирджреЗрди рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рдХреБрдЫ рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ, рд╣реИ рдирд╛?
  5. рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ JDBC рд╕реАрдзреЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди TransactionManager рдФрд░ NamedParameterJdbcOperation рдХреЛ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рд╕реЗрдо рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рд╕рдм рд╡рд╕рдВрдд рдбреЗрдЯрд╛ JDBC рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрддрд╛ рд╣реИред рдЕрдм рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:


 @RunWith(SpringRunner.class) @Transactional @ContextConfiguration(classes = CustomerConfig.class) public class CustomerRepositoryTest { @Autowired CustomerRepository customerRepo; @Test public void createSimpleCustomer() { Customer customer = new Customer(); customer.dob = LocalDate.of(1904, 5, 14); customer.firstName = "Albert"; Customer saved = customerRepo.save(customer); assertThat(saved.id).isNotNull(); saved.firstName = "Hans Albert"; customerRepo.save(saved); Optional<Customer> reloaded = customerRepo.findById(saved.id); assertThat(reloaded).isNotEmpty(); assertThat(reloaded.get().firstName).isEqualTo("Hans Albert"); } } 

@Query


рдХреЗрд╡рд▓ рдорд╛рдирдХ CRUD рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдк CrudRepository рд╡рд░реНрдЧ рдХреЗ рднрдВрдбрд╛рд░ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдордиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреНрд╡реЗрд░реА рдкреАрдврд╝реА рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ - рд╕реНрдкреНрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреА рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рд╢реЗрд╖рддрд╛, рдЬрдм рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХреЗ рдирд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ SQL рдкреНрд░рд╢реНрди рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЖрдк рдмрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд @Query рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ SQL рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред


 @Query("select id, first_name, dob from customer where upper(first_name) like '%' || upper(:name) || '%' ") List<Customer> findByName(@Param("name") String name); 

рдпрджрд┐ рдЖрдк рдЕрдиреБрд░реЛрдз рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдпрд╛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд┐рдзрд┐ рдореЗрдВ @Modifying рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред


рдЖрдЗрдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦреЗрдВ рдХрд┐ рд╣рдорд╛рд░реА рдирдИ рд╡рд┐рдзрд┐ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред


 @Test public void findByName() { Customer customer = new Customer(); customer.dob = LocalDate.of(1904, 5, 14); customer.firstName = "Albert"; Customer saved = customerRepo.save(customer); assertThat(saved.id).isNotNull(); customer.id= null; (1) customer.firstName = "Bertram"; customerRepo.save(customer); customer.id= null; customer.firstName = "Beth"; customerRepo.save(customer); assertThat(customerRepo.findByName("bert")).hasSize(2); (2) } 

  1. рдХреНрдпреЛрдВрдХрд┐ рдЪреВрдВрдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдмреАрдЪ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рдХреЗрд╡рд▓ Id рдлрд╝реАрд▓реНрдб рдФрд░ рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП Id рдХреЛ null рд╕реЗрдЯ рдХрд░рдирд╛ рдФрд░ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рдПрдХ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдПрдЧрд╛ред
  2. рдЕрдиреБрд░реЛрдз рдореЗрдВ, рд╣рдо рдХреЗрд╕-рд╕рдВрд╡реЗрджреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо "рдЕрд▓реНрдмрд░реНрдЯ" рдФрд░ "рдмрд░реНрдЯреНрд░рд╛рдо" рдкрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди "рдмреЗрде" рдирд╣реАрдВред

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ


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


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

Source: https://habr.com/ru/post/hi423697/


All Articles