[JSP] DBCP (CRUD)

Gabriela·2023년 9월 20일
0

JSP

목록 보기
18/20

DBCP

DataBase Connection Pool


  • DB에 접근할때는 반드시 Connection이 필요함
  • DB에 접근할때마다 DriverManager를 이용해 Connection을 새로 만들면 시스템의 처리 속도가 떨어짐
  • 미리 여러 개Connection을 만들어 두고 DataSource를 통해서 사용하는 방식을 '커넥션 풀(Connection Pool)'이라고 함

DBCP 동작 방식

  • 미리 Connection여러 개 생성해 둠
  • Connection 요청이 들어오면 Connection Pool에 있는 Connection하나 제공해 줌
  • Connection 사용이 끝나면 Connection을 다시 회수

DBCP 사용을 위한 준비-1

DBCP 라이브러리

  • DBCP : 자카르타(Jakarta) DBCP API 관련 jar
  • Pool : 자카르타(Jakarta) DBCP API가 사용하는 Pool API 관련 jar
  • Collections : 자카르타(Jakarta) Pool API가 사용하는 Collection API 관련 jar

다만, Tomcat에 모든 라이브러리가 포함되어 있으므로 Tomcat을 사용하는 경우 준비할 필요는 없음
%CATALINA_HOME%\lib\tomcat-dbcp.jar


DBCP 사용을 위한 준비-2

context.xml

  • Connection Pool 설정에 필요한 정보를 context.xml에 작성해야 함
  • Web Root/META-INF/context.xml 파일 생성
  • <Resource> 태그 작성

<Resource> 태그 주요 속성

속성명의미
auth자원 관리 주체(Container/Application)
nameJNDI 이름 (Context의 lookup()으로 검색)
typeResource 타입
driverClassNameJDBC 드라이버 이름
url데이터베이스 커넥션 URL
username데이터베이스 사용자
password데이터베이스 사용자 암호
maxTotalDataSource로부터 꺼낼 수 있는 최대 Connection(기본 8개)
maxIdleDataSource가 유지하는 최대 유휴 Connection(기본 8개)
maxWait남은 Connection이 없을 때 Connection 반납을 기다리는 최대 밀리초(기본 -1 : 반납할때까지 계속 기다림)

JNDI

Java Naming and Directory Interface API

  • 서버의 특정 Resource를 찾는 방식
  • Java EE 서버에서 Resource를 찾는 경우 정해진 기본 이름이 있음

주요 JNDI 이름

JNDI 예시

  • DataSource 객체 생성context.xml에 작성한 <Resource> 태그의 name 속성이 필요함

CRUD

간단한 게시판 만들기


memo

  • Doamin == dto == vo : 모두 동일하다. 만드는 사람에 따라서 이름을 다르게 지정할 수 있다.
  • Controller : 특정 테이블이름 뒤에 Controller를 붙여서 이름을 짓는다. 이름은 통일하는게 좋다.
  • 모든 요청은 controller에 해야한다. (.do 경로)
    • 요청을 controller로 하지 않으면 mvc 패턴을 어긴것.
  • filter : requestresponse의 부모타입
  • 모든 파라미터의 값은 배열이다. (여러 값이 들어갈 수 있기 때문)
  • getParameterMap() : 모든 파라미터Map으로 제공한다.
  • xml file : opne with-xml 에디터로 연다.
  • javax.sql.DataSource : Connection Pool을 관리해주는 객체(DataSource)
  • 실제 구현은 역순으로 한다.(Dao부터 ...)

페이징처리(목록만들기)

  • page, total, display 정보를 항상 먼저 받아와야한다.

👉dbcp(crud) 간단한 게시판 만들기 예제(깃허브 클릭)



profile
개발이 세상에서 제일 재밌어요

0개의 댓글