웹 복습(2)

넙데데맨·2022년 5월 23일
0

Servlet 비즈니스 로직 처리

  • SQL문을 사용해 데이터베이스 접근
  • DAO, VO 클래스 사용

과정

  1. 브라우저가 서블릿에 요청
  2. DAO 객체 생성 후 메서드 호출
  3. 메서드에서 DB 연결 후 SQL 실행
  4. 조회된 회원 정보 VO 속성에 설정 후 저장해 서블릿에 반환
  5. 저장된 정보 HTML 태그 문자열로 만든 후 브라우저로 전송

Statement와 PreparedStatement 객체 차이

쿼리문 수행 시
1. 쿼리 문 분석
2. 컴파일
3. 실행
세 가지 단계를 거치게 되는데 Statement는 쿼리 수행마다 이 단계를 전부 거치게 되고 PreparedStatement는 처음 한 번만 거친 후 캐시에 담아 재사용한다.

차이점

  1. 캐시 사용 유무
  2. 쿼리 인자 부여 가능(PreparedStatement만 가능)
  3. 컴파일 횟수 차이(PreparedStatement는 한 번만)

참고

PreparedStatement 사용 시 성능상 캐싱되어야 할 쿼리가 그렇지 않은 쿼리 때문에 캐싱이 안 되는 상황이 발생할 수도 있다.

커넥션 풀

웹 애플리케이션과 데이터베이스 연결을 유지하는 기술

톰캣 컨테이너에서 동작과정

  1. 톰캣 컨테이너 실행 후 응용 프로그램 실행
  2. ConnectionPool 객체 생성
  3. ConnectionPool 객체와 DBMS 연결
  4. ConnectionPool 제공 메소드 호출해 연동

커넥션 풀 구현

ConnetionPool 객체 구현을 위해 javax.sql.DataSource 클래스를 사용
톰캣이 만들어 놓은 ConnectionPool 객체 접근을 위해 JNDI 이용

JNDI(Java Naming and Directory Interface)

필요 자원 key/value 쌍으로 저장 후 키를 이용해 값을 얻는 방법

사용 예
  • 웹 브라우저에서 name/value쌍으로 전송 후 getParameter(name) 으로 값을 가져올 때
  • 해시맵, 해시테이블
  • 브라우저에서 도메인 네임으로 DNS 서버에 요청할 경우 도메인 네임에 대한 IP 주소 가져올 때
구성 패키지
javax.naming
javax.naming.directory
javax.naming.ldap
javax.naming.event
javax.naming.spi

javax.naming.context 인터페이스를 구현한 객체를 통해 name 값을 설정 후 context.xml에 설정된 DataSource에 접근한다.

profile
차근차근

0개의 댓글