일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- devops
- ReactJS
- redis
- Oracle
- javascript
- Spring Boot
- db
- 요리
- Design Patterns
- JVM
- elasticsearch
- 맛집
- ubuntu
- laravel
- IntelliJ
- tool
- MySQL
- Gradle
- php
- springboot
- Spring Batch
- Web Server
- Spring
- Git
- it
- jenkins
- jsp
- java
- AWS
- linux
- Today
- Total
아무거나
[JSP] 커넥션 풀 본문
[JSP] 커넥션 풀
1. DAO, DTO
- DAO(Data Access Object) : 데이터 베이스에 접속해서 추가,삭제, 수정 등의 작업을 하는 클래스이다. ( application <-> WAS <-(dao)-> DB )
일반적인 JSP 혹은 Servlet 페이지내에 위의 로직을 함께 기술할 수 도 있지만, 유지보수 및 코드의 모듈화를 위해 별도의
DAO클래스를 만들어 사용한다.
- DTO(Data Transfer Object) : DAO클래스를 이용하여 데이터 베이스에서 데이터를 관리할 때 데이터를 일반적인 변수에 할당하여 작업 할수도 있지만,
해당 데이터의 클래스를 만들어 사용 ( 난잡해있는 여러 데이터들을 하나로 묶어서 클래스로 만들어 사용 -> 데이터를 변환 )
* 웹 브라우저 <-> 서버(Servlet,jsp <-> DTO <-> DAO) <-> DataBase
2. PreparedStatement 객체
- SQL문 실행을 위해 Statement객체를 이용 하였다. Statement객체의 경우 중복코드가 많아지는 단점이 있다.
이러한 단점을 보완하기 위하여 PreparedStatement객체에 대해서 살펴보자.
[Ex]
Class.forName(driver);
connection = DriverManager.getConnection(url, uid, upw);
int n;
String query = "insert into memberforpre (id, pw, name, phone) values (?, ?, ?, ?)";
PreparedStatement = connection.prepareStatement(query);
prepareStatement.setString(1, "abc");
prepareStatement.setString(2, "12334");
prepareStatement.setString(3, "홍길동");
prepareStatement.setString(4, "010-0000-0000");
n = prepareStatement.executeUpdate();
prepareStatement.setString(1, "def");
prepareStatement.setString(2, "0324243");
prepareStatement.setString(3, "홍길동2");
prepareStatement.setString(4, "010-0330-0000");
n = prepareStatement.executeUpdate();
.....
// 이런식으로 기존에 직접 작성해서 휴먼에러가 나는 부분을 재활용하여 에러를 방지할 수 있다.
3. 커넥션 풀(DBCP)
- 클라이언트에서 다수의 요청이 발생할 경우 데이터베이스에 부하가 발생하게된다.
이러한 문제를 해결 하기 위해서 커넥션 풀(DataBase Connection Pool)기법을 이용한다.
웹브라우저 ->
웹브라우저 ->
웹브라우저 -> 서버(DBCP) -> DataBase // DBCP서버를 갖고있는 데이터커넥션 서버에서 풀을 만들어놓은곳에서 통신을한다.
웹브라우저 ->
.... ..
ex) Tomcat컨테이너가 데이터베이스 인증을 하도록 context.xml 파일을 열어 아래의 코드를 추가한다.
[context.xml]
........
// oracle 기준 코드 추가
<Resource
auth="Container"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:xe"
username="test"
password="testpw"
name="jdbc/Oracle11g"
type="javax.sql.DataSource"
maxActive="50"
maxWait="1000"
/>
</Context>
// auth="Container" : 컨테이너에서 작업을 하겠다고 선언.
// maxActive="50" : 50번째까지 만든다. 51번째는 새로 만들어줘야함.
// maxWait="1000" : 위의 51번쨰일경우에 1000이상 기다리면 db excepiton에 걸린다.
참고: https://www.inflearn.com/course/%EC%8B%A4%EC%A0%84-jsp-%EA%B0%95%EC%A2%8C/dashboard
'Java & Kotlin > JSP & Servlet' 카테고리의 다른 글
[JSP] EL(Expression Language) (0) | 2019.12.21 |
---|---|
[JSP] 파일 업로드 (0) | 2019.12.21 |
[JSP] 빈(Bean) (0) | 2019.12.21 |
[JSP] 예외 페이지 (0) | 2019.12.21 |
[JSP] 세션 (0) | 2019.12.21 |