Sio's Programming
커넥션풀 (DAO, DTO, PreparredStatement, 커넥션 풀(DBCP) 본문
DAO , DTO
DAO : Data Access Object
DTO : Data Transfer Object
DAD(DB로 접근해서 로직을 수행하는 역할)
클라이언트 -------> WAS -----> DB
DTO(데이터를 하나로 묶어서 JSP나 Servlet으로 전달한다)
DAO
데이터 베이스에 접속해서 데이터 추가,삭제,수정 등의 작업을 하는 클래스
일반적인 JSP혹은 Servlet 페이지내에 위의 로직을 함께 기술할 수도 있지만, 유지보수 및 코드의 모듈화를 위해 별도의 DAO클래스를 만들어 사용 합니다.
DTO
DAO클래스를 이용하여 데이터 베이스에서 데이터를 관리할 때 데이터를 일반적인 변수에 할당하여 작업 할수도 있지만,
해당 데이터의 클래스를 만들어 사용 합니다.
웹브라우저 - > 서버 -> 데이터베이스
servlet -> DAO ->
<- DTO
PreparedStatement 객체 살펴보기
SQL문 실행을 위해 Statement객체를 이용 하였습니다. Statement 객체의 경우 중복코드가 많아지는 단점이 있습니다.
이러한 단점을 보완한 PreparedStatement객체에 대해 살펴 봅니다
Class.forName(drive);
connection = DriverManager.getConnection(url, uid, upw);
int n;
String query = "insert into memberforpre (id, pw, name, phone) values (?,?,?,?)";
preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1, "abc"); //values의 첫번쨰 물음표에 값을 넣는다.
preparedStatement.setString(2, "123");
preparedStatement.setString(3, "홍길동");
preparedStatement.setString(4, "010-1234-5678");
n = preparedStatement.executeUpdate();
preparedStatement.setString(1, "abc"); //values의 첫번쨰 물음표에 값을 넣는다.
preparedStatement.setString(2, "123");
preparedStatement.setString(3, "홍길동");
preparedStatement.setString(4, "010-1234-5678");
n = preparedStatement.executeUpdate();
커넥션 풀(DBCP)
클라이언트에서 다수의 요청이 발생할 경우 데이터베이스에 부하가 발생하게 됩니다.
이러한 문제를 해결 하기 위해서 커넥션 풀 기법을 이용 합니다.
c - > was - > DB
-> 커넥션 풀을 미리 만들어 놓고 클라이언트가 요청할때마다 사용하게끔 한다 . 부하가 안걸리게 하기 위함
tomcat 컨테이너가 데이터베이스 인증을 하도록 context.xml 파일을 열어 아래의 코드를 추가 합니다.
<Resource
auth="Container"
driverClassName = "oracle.jdbc.driver.OracleDriver"
url = "jdbc:oracle:thin:@localhost:1521:xe"
username = "scott"
password = "tiger"
name = "jdbc/Oracle11g
type="javax.sql.DataSource"
maxActive = "50" // 커넥션풀 갯수를 지정
maxWait = "1000"
/>
</Context>
서버에서 풀을 만들어줘야 하기때문에 톰캣에서 설정함
'Programming > DB' 카테고리의 다른 글
| 데이터 베이스 (Oracle GUI 툴 설치, 회원가입 및 회원정보 수정) (0) | 2018.05.09 |
|---|---|
| 데이터 베이스 Oracle (JDBC, Statement객체) (0) | 2018.05.09 |
| 데이터 베이스 Oracle (설치,계정생성,SQL문 익히기) (0) | 2018.05.09 |