1. JDBC
- jdbc는 java database connectivity 의 약자로 java에서 데이터 베이스에 접근을 할 수 있게 만든 Java API다.
- DriverManager 또는 Datasource 객체를 이용해 DB connection을 가져와서 사용한다.
- Statement, PreparedStatement 객체를 이용해 쿼리를 생성한다.
- ResultSet 객체를 이용해 쿼리의 결과값을 받아 올 수 있다.
// DB config 파일에 bean 객체로 Datasoure 객체를 생성
@Bean
public DataSource dataSource() {
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setUsername(username);
hikariConfig.setPassword(password);
hikariConfig.setJdbcUrl(jdbcUrl);
hikariConfig.setConnectionTestQuery("SELECT 1");
hikariConfig.setMaximumPoolSize(100);
hikariConfig.setLeakDetectionThreshold(30000);
hikariConfig.setPoolName("MySQL-HikariCP");
return new HikariDataSource(hikariConfig);
}
// bean 으로 등록한 datasource 객체 의존성 주입
@Autowired
private DataSource dataSource;
public void selectTest(){
Connection con = null;
Statement stmt = null;
ResultSet result = null;
try{
// DB 연결을 위한 connection 객체 생성
con = dataSource.getConnection();
// SQL 쿼리 객체 생성
stmt = con.createStatement();
// 쿼리 작성
String sql = "select * from test_table";
// 쿼리 실행 및 결과 데이터 받아오기
result = stmt.executeQuery(sql);
// 반목문을 통한 쿼리 결과값 출력
while(result.next()){
}
}catch(Exception e) {
// 예외 처리
}finally{
// try 구문이 끝나면 필수적으로 DB 연결 및 자원 해제
if(con != null) con.close();
if(stat != null) stat.close();
// result 객체는 stat 객체가 종료되면 자동으로 종료되 된다고 명시 되어서 수동으로 직접 종료 시킬 필요는 없다.
if(result != null) result.close();
}
}
2. JdbcTemplate
- jdbcTemplate는 위에서 설명했던 jdbc의 단점을 보완하기 위해서 나온 기능이다.
- jdbc에서 매번 DB, 자원 생성 및 해제를 반복하는 코드를 spring framework에서 대신 해준다.
- 개발자는 jdbc와는 다르게 sql 코드에만 집중할 수 있어 관리 포인트가 줄어드는 장점이 있다.
// DB config 파일에서 jdbcTemplate 객체를 bean으로 등록한다.
@Bean(name = "jdbcTemplate")
public JdbcTemplate jdbcTemplate(@Qualifier("hikariDataSource") DataSource dataSource) {
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.setResultsMapCaseInsensitive(true);
return jdbcTemplate;
}
// bean으로 등록해둔 jdbcTemplate 객체 의존성 주입
@Autowired
private JdbcTemplate jdbcTemplate;
public String selectTest() {
String res = null;
String sql = "select * from test_table;"
// bean으로 등록시켜둔 jdbcTemplate 객체를 이용해 쿼리 조회만 하면 된다.
List<Map<String, Object>> result = jdbcTemplate.query(sql, new ColumnMapRowMapper());
return res;
}
'Spring' 카테고리의 다른 글
Object Storage 이미지 출력 (0) | 2023.06.09 |
---|---|
@Asnyc를 이용한 멀티 스레드 (0) | 2023.06.08 |
멀티 스레드 환경을 위한 스레드 풀 (Thread pool) - ThreadPoolTaskExecutor (0) | 2023.06.06 |
멀티 스레드 Runnable (0) | 2023.06.06 |
MyBatis (0) | 2023.06.04 |