본문 바로가기

JAVA

DataSource를 이용한 데이터베이스 연동

  • ConnectionPool
    • 데이터 베이스의 접속 계정, 비밀번호, url을 반복하여 로직에 구성 하지 않고 미리 데이터베이스와 연결 시켜놓은 기술을 커넥션 풀(ConnectionPool)이라고 한다.
    • 동작과정
      • 톰캣 컨테이너 실행 -> ConnectionPool 객체 생성 -> DBMS 연결 -> 데이터베이스 연동
      • 톰켓 컨테이너는 자체적으로 ConnectionPool 기능을 제공한다.
  • JNDI
    • ConnectionPool 객체를 구현시 JavaSE -> javax.sql.DataSource 클래스를 사용한다.
    • 웹 애플리케이션 실행 시 톰캣이 생성한 ConnectionPool 객체에 접근시 JNDI를 이용한다.
    • JNDI(Java Naming and Directory Interface)란 필요한 자원을 키/값(key/value) 쌍으로 저장한 후 필효할때 키를 얻는 방법
    • 사용예
      • 웹 브라우저에서 name/value 쌍으로 전송 한 후 Servlet에서 파라미터 값을 가져올때
      • 해시맵(HaspMap), 해시테이블(HashTable)에 키/값 으로 저장 후 키를 이용해 값을 가져올때
      • 웹 브라우저에서 도메인 네임으로 DNS 서버에 요청 할 경우 도메인 네임에 대한 IP 주소를 가져올때
  • Intelij Connection Pool 설정 방법
  • 맥북기준 Command + ; 입력 > Project Structure > Modules 클릭
  • Web 패키지 클릭  > Add Application Server Secific descriptor 클릭

  • Tomcat Server 선택 후 OK 클릭 > Context.xml내 Connection Pool 정보 입력

  • name : DataSource에 대한 JNDI 이름
  • auth : 인증 주체
  • type : javax.sql.DataSource 클래스 사용
  • driverClassName : 연결할 데이터 베이스 종류에 따른 드라이버 클래스 이름
  • url : 데이터 베이스 주소
  • maxActive : 데이터베이스 최대 동시 접속자 수 
  • maxWait : 새로운 연결에 대한  데이터 베이스 접속 대기 시간