본문 바로가기
JSP, Servlet/Summary

JSP/Servlet : DAO, DTO, Connection Pool

by autumnly 2017. 1. 22.


DAO (Data Access Object)

데이터베이스에 접속해서 데이터 추가, 삭제, 수정 등의 작업을 하는 클래스.

유지보수와 코드의 모듈화를 위해 별도의 클래스로 만들어 사용함.

*singleton 패턴을 이용해 하나의 객체만 만들어 사용한다



DTO (Data Transfer Object)

DAO 클래스를 이용하여 데이터베이스에서 데이터를 관리할 때 해당 데이터의 클래스를 만들어 사용.




PreparedStatement

Statement 객체를 사용하는 것보다 코드를 간결하게 만들 수 있음.


1
2
3
4
5
6
7
8
9
10
11
Class.forName(driver);
connection = DriverManager.getConnection(url, uid, upw);
int n;
String query = "insert into member (id, pw, name, phone) values (?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(query);
 
preparedStatement.setString(1"aaa");
preparedStatement.setString(2"111");
preparedStatement.setString(3"autumn");
preparedStatement.setString(4"010-111-1111");
= preparedStatement.executeUpdate();
cs




커넥션 풀 (DBCP)

다수의 클라이언트 요청이 발생할 경우 데이터베이스에 부하가 발생하는 문제를 해결하기 위해

커넥션 풀 기법을 이용함.

커넥션객체를 미리 여러 개(pool) 만들어 놓고 클라이언트의 요청이 오면 바로 사용.


서버에 미리 만들어놓는 것이므로 자바가 아닌 웹 서버(tomcat 컨테이너) 에서 작업.

context.xml 파일에 다음의 코드를 추가한다.


1
2
3
4
5
6
7
8
9
10
11
<Resource
    auth = "Container"
    driverClassName = "com.mysql.jdbc.Driver"
    url = "jdbc:mysql://localhost:3306/test"
    username = "autumn"
    password = "8386"
    name = "jdbc/mysql"
    type = "javax.sql.DataSource"
    maxActive = "50"
    maxWait = "1000"
/>
cs


그리고 다음과 같이 사용.

1
2
3
4
5
6
Context context = new InitialContext();
dataSource = (DataSource)context.lookup("java:comp/env/jdbc/mysql");
 
 
con = dataSource.getConnection();
stmt = con.createStatement();
cs