- 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) 간단한 게시판 만들기 예제(깃허브 클릭)