'ConnectionPool'에 해당되는 글 3건

ConnectionPool이란?

2020/IT Q_A 2020. 5. 20. 11:01
반응형

  온라인 쇼핑몰의 경우 동시에 수십 명, 많게는 수백 명까지 접속해서 상품 조회, 주문하기 등의 기능을 사용하는데 앞의 방법처럼 데이터베이스와 연동해 작업해야 한다면 너무 비효율적입니다. 이 문제를 해결하기 위해 현재는 웹어플리케이션이 실행됨과 동시에 연동할 데이터베이스와의 ㅇ녀결을 미리 설정해 둡니다. 그리고 필요할 때마다 미리 연결해 놓은 상태를 이용해 빠르게 데이터베이스와 연동하여 작업을 합니다. 이렇게 미리 데이터베이스와 연결시킨 상태를 유지하는 기술을 커넥션 풀(ConnectionPool)이라고 부릅니다.

 

기존 데이터베이스 연동 방법의 문제점

  • 애플리케이션에서 데이터베이스에 연결하는 과정에서 시간이 많이 걸립니다.

ConnectionPool

  • 애플리케이션 실행 시 미리 ConnectionPool 객체를 생성한 후 데이터베이스와 연결을 맺습니다.
  • 애플리케이션은 데이터베이스 연동 작업 발생 시 이 ConnectionPool 객체를 이용해서 작업합니다.

 

커넥션 풀 동작 과정

  • 톰캣 컨테이너를 실행한 후 응용 프로그램을 실행합니다.
  • 톰캣 컨테이너 실행 시 ConnectionPool 객체를 생성합니다.
  • 생성된 커넥션 객체는 DBMS와 연결합니다.
  • 데이터베이스와의 연동 작업이 필요할 경우 응용 프로그램은 ConnectionPool에서 제공하는 메서드를 호출하여 연동합니다.

  톰캣 컨테이너는 자체적으로 ConnectionPool 기능을 제공합니다. 톰캣 실행 시 톰캣은 설정파일에 설정된 데이터베이스 정보를 이용해 미리 데이터베이스와 연결하여 ConnectionPool 객체를 생성한 후 애플리케이션이 데이터베이스와 연동할 일이 생기면 ConnectionPool 객체의 메서드를 호출해 빠르게 연동하여 작업합니다.

 

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

커넥션 풀을 이용해 새 회원을 등록해 보겠습니다.

sec02.ex02패키지를 생성하고 아래의 클래스들을 만들겠습니다.

그 후에 WebContent에 MemberForm.html 파일을 생성해 줍니다.

 

첫번째로 우리의 화면을 담당해줄 html파일을 작성해 보도록 하겠습니다.

회원가입 화면이 있다고 상상하시고 거기에 아이디, 비밀번호 , 이름, 이메일을 입력하면 정보들을 서블릿으로 보내겠죠?

  command 값을 먼저 받아와 addMember이면 같이 전송된 회원정보를 받아 옵니다. 회원 정보를 MemberVO 객체에 설정한 후 MemberDAO의 메서드로 전달해 SQL문을 이용하여 테이블에 추가하겠습니다.

MemberServlet를 코딩해보겠습니다.

다음으로 MemberDAO를 코딩하겠습니다.

 

VO는 전에 실습했던 것과 같습니다.

여기까지 됬다면 이제 실행을 해보겠습니다.

주소는 localhost:8080/proj07/MemberForm.html

여기서 아이디나 비밀번호 이름 이메일 중에 하나만 비어있어도 아래의 alert 창이 뜨게 됩니다.

모두 알맞게 입력을 하면

 

이러한 화면이 뜨게 됩니다.

새 회원 가입하기를 클릭하면 다시 회원가입화면으로 가게되고

삭제를 누르면 삭제가 됩니다.

슈퍼맨을 삭제해 보겠습니다.

 

수고하셨습니당!

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

커넥션 풀

  온라인 쇼핑몰의 경우 동시에 수십에서 수백명까지 접속해서 조회, 주문등 다양한 기능을 사용하는데 앞의 방법처럼 데이터 베이스와 연동해 작업해야 한다면 너무 비효율적입니다.

 

이 문제를 해결하기 위해 현재는 웹 어플리케이션이 실행됨과 동시에 연동할 데이터베이스와의 연결을 미리 설정해둡니다.

  이렇게 미리 데이터베이스와 연결시킨 상태를 유지하는 기술을 커넥션 풀 (ConnectionPool)이라고 부릅니다.

 

JNDI

  실제 웹 어플리케이션에서 ConnectionPool 객체를 구현할 때는 Java SE에서 제공하는 javax.sql.DataSource 클래스를 이용합니다.

그리고 웹 어플리케이션 실행 시 톰캣이 만들어 놓은 ConnectionPool 객체에 접근할 때는 JNDI를 이용합니다.

  JNDI란 필요한 자원을 키/값 쌍으로 저장한 후 필요할 때 키를 이용해 값을 얻는 방법입니다.

 

아래와 같이 Servers에 들어가서 context.xml을 찾고 우측과 같이 코딩을 합니다

username과 password 는 본인이 아이디와 비밀번호를 넣어주시면 됩니다.

 

이제 설정을 마쳤으니 클래스를 만들어 연동해 보겠습니다.

sec02.ex01 패키지를 만들고 앞에서 사용한 MemberDAO, MemberServlet, MemberVO 클래스를 복사하겠습니다.

MemberDAO클래스에서 서블릿 매핑 이름을 /member2 로 바꿔줍니다.

 

아래의 import는 코딩하시면서 해주셔야 합니다. 단축키(ctrl+ shift +o)

아래에 주석처리된 부분은 저희가 커넥션 풀을 이용하였기 때문에 주석처리를 해줍니다.

 

앞에서 한 것과 결과는 같지만 이번에는 커넥션 풀을 이용해서 데이터베이스와 연동했다는 점에서 차이가 있습니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,