- DB에 접근할때는 반드시
Connection이 필요함- DB에 접근할때마다
DriverManager를 이용해Connection을 새로 만들면 시스템의 처리 속도가 떨어짐- 미리 여러 개의
Connection을 만들어 두고DataSource를 통해서 사용하는 방식을 '커넥션 풀(Connection Pool)'이라고 함
- 미리
Connection을 여러 개 생성해 둠Connection요청이 들어오면Connection Pool에 있는Connection을 하나 제공해 줌Connection사용이 끝나면Connection을 다시 회수함
DBCP 라이브러리
DBCP: 자카르타(Jakarta) DBCP API 관련 jarPool: 자카르타(Jakarta) DBCP API가 사용하는 Pool API 관련 jarCollections: 자카르타(Jakarta) Pool API가 사용하는 Collection API 관련 jar
다만, Tomcat에 모든 라이브러리가 포함되어 있으므로 Tomcat을 사용하는 경우 준비할 필요는 없음
%CATALINA_HOME%\lib\tomcat-dbcp.jar
context.xml
- Connection Pool 설정에 필요한 정보를
context.xml에 작성해야 함Web Root/META-INF/context.xml파일 생성<Resource>태그 작성
<Resource> 태그 주요 속성| 속성명 | 의미 |
|---|---|
| auth | 자원 관리 주체(Container/Application) |
| name | JNDI 이름 (Context의 lookup()으로 검색) |
| type | Resource 타입 |
| driverClassName | JDBC 드라이버 이름 |
| url | 데이터베이스 커넥션 URL |
| username | 데이터베이스 사용자 |
| password | 데이터베이스 사용자 암호 |
| maxTotal | DataSource로부터 꺼낼 수 있는 최대 Connection(기본 8개) |
| maxIdle | DataSource가 유지하는 최대 유휴 Connection(기본 8개) |
| maxWait | 남은 Connection이 없을 때 Connection 반납을 기다리는 최대 밀리초(기본 -1 : 반납할때까지 계속 기다림) |
- 서버의 특정
Resource를 찾는 방식Java EE서버에서Resource를 찾는 경우 정해진 기본 이름이 있음
주요 JNDI 이름
JNDI 예시
- DataSource 객체 생성 시
context.xml에 작성한<Resource>태그의name 속성이 필요함
memo
Doamin == dto == vo: 모두 동일하다. 만드는 사람에 따라서 이름을 다르게 지정할 수 있다.Controller: 특정 테이블이름 뒤에 Controller를 붙여서 이름을 짓는다. 이름은 통일하는게 좋다.- 모든 요청은 controller에 해야한다. (
.do경로)
- 요청을 controller로 하지 않으면 mvc 패턴을 어긴것.
filter:request와response의 부모타입- 모든 파라미터의 값은 배열이다. (여러 값이 들어갈 수 있기 때문)
getParameterMap(): 모든 파라미터를 Map으로 제공한다.xml file:opne with-xml 에디터로 연다.javax.sql.DataSource: Connection Pool을 관리해주는 객체(DataSource)- 실제 구현은 역순으로 한다.(
Dao부터 ...)
page,total,display정보를 항상 먼저 받아와야한다.
👉dbcp(crud) 간단한 게시판 만들기 예제(깃허브 클릭)
