개발합니다
[Spring] JdbcTemplate & 커넥션풀 본문
JDBC (Java Database Connectivity)
자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API.
JdbcTemplate
매번 작업이 되는 드라이버 로딩, DB 연결, 자원해제 부분을 한 번에 처리해서
SQL 작성 및 전송 부분에만 집중할수 있게 해주는 템플릿.
커넥션풀
데이터베이스 커넥션을 미리 만들어놓고 사용하는 방법
c3p0 모듈의 ComboPooledDataSource를 이용해 만들 수 있다. 반드시 예외처리를 해주어야 한다.
스프링 설정 파일에 빈(Bean) 객체로 생성하는 방법과 config 파일로 작성해서 사용하는 방법이 있다.
[DBConfig.java]
@Configuration
public class DBConfig {
@Bean
public ComboPooledDataSource dataSource() throws PropertyVetoException {
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass("oracle.jdbc.driver.OracleDriver");
dataSource.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:xe");
dataSource.setUser("scott");
dataSource.setPassword("tiger");
dataSource.setMaxPoolSize(200);
dataSource.setCheckoutTimeout(60000);
dataSource.setMaxIdleTime(1800);
dataSource.setIdleConnectionTestPeriod(600);
return dataSource;
}
}
[MemberDao.java]
@Repository
public class MemberDao implements IMemberDao {
private JdbcTemplate template;
@Autowired
public MemberDao(ComboPooledDataSource dataSource) {
this.template = new JdbcTemplate(dataSource);
}
@Override
public int memberInsert(final Member member) {
int result = 0;
final String sql = "INSERT INTO member (memId, memPw, memMail) values (?,?,?)";
result = template.update(sql, new PreparedStatementSetter() {
@Override
public void setValues(PreparedStatement pstmt) throws SQLException {
pstmt.setString(1, member.getMemId());
pstmt.setString(2, member.getMemPw());
pstmt.setString(3, member.getMemMail());
}
});
return result;
}
}
dataSource에 담긴 데이터베이스 커넥션 정보를 JdbcTemplate에 넣어서 사용한다.
==> 매번 커넥션을 생성할 필요가 없어 메모리가 절약되고, 유지보수가 용이하다.
'Web > Spring' 카테고리의 다른 글
[Spring] poi 라이브러리를 이용한 엑셀 일괄 등록 (0) | 2022.04.09 |
---|---|
[Spring] 환경 추상화(Environment Abstraction)란? (0) | 2022.03.30 |
[Spring] @ModelAttribute , Model & ModelAndView 객체 (0) | 2022.03.25 |
[Spring] @RequestMapping , 요청 파라미터 (0) | 2022.03.25 |
[Spring] 어노테이션을 통한 스프링 설정 (Annotation Config) (0) | 2022.03.24 |