7장 서블릿 비즈니스 로직 처리
1. 서블릿의 비즈니스 로직 처리 방법
- 서블릿의 비즈니스 처리 작업 :
1)서블릿이 클라이언트로부터 요청을 받으면 그 요청에 대해 작업을 수행하는 것.
2)웹 프로그램에서 대부분의 비즈니스 처리 작업은 데이터베이스 연동 관련 작업이지만 그 외에 다른 서버와 연동해서 데이터를 얻는 작업도 수행
3)서블릿의 가장 핵심 기능
2. 서블릿의 데이터베이스 연동하기
- MemberDAO, MemverVO와 같은 클래스를 이용해 DB와 통신함.
cf) 자바에서 모든 DBMS에 동일하게 접근할 수 있도록 정의한0 인터페이스와 클래스(=JDBC)를 미리 정의하고 실제 구현은 각 DBMS 개발사에서 한다. DBMS 개발사가 구현한 클래스의 집합을 '드라이버'라고 한다. 자바 애플리케이션 개발자는 표준화된 방법으로 모든 DBMS에 쉽게 접근할 수 있다.
- 자바에서 쿼리문을 실행하게 해주는 statement 객체를 상속하는 preparedStatment는 컴파일된 SQL문을 DBMS에 전달하여 성능을 향상시킴. SQL문에 '?'를 넣을 수 있으므로 '?'의 값만 바꾸어 손쉽게 설정할 수 있어 statement보다 SQL문 작성하기가 더 간단하고 동적임.
3. DataSource 이용해 데이터베이스 연동
- connectionPool : 애플리케이션에서 데이터베이스 연결 과정에서 시간이 너무 많이 걸린다. -> 애플리케이션 실행 시 미리 connection 객체를 생성한 후, 미리 데이터베이스 연결을 맺는다. 애플리케이션은 데이터베이스 연동 작업 발생 시 이 connection 객체를 이용해서 작업을 한다.
- JNDI : 필요한 자원을 키/값 쌍으로 저장한 후 필요할 때 키를 이용해 값을 얻는 방법. 톰캣 컨테이너가 ConnectionPool 객체를 생성하면 기 객체에 대한 JNDI key를 미리 설정해 놓고 웹 애플리케이션에서 데이터베이스와 연동 작업을 할 때 이 JNDI key로 접근하여 작업을 수행한다.
- 톰캣의 ConnectionPool 설정 과정
1) JDBC 드라이버를 /WEB-INF/lib 폴더에 설치
2) ConnectionPool 기능 관련 jar 파일을 /WEB-INF/lib 폴더에 설치
3) CATALINA_HOME\context.xml에 Connection 객체 생성 시 연결할 데이터베이스 정보를 JNDI로 설정
4) DAO 클래스에서 데이터베이스 연동 시 JNDI 이름으로 데이터베이스를 연결해서 작업
cf)DataSource란 DataSourceDB와의 연결을 미리 생성하고, 그것을 관리하는 역할을 하는 오브젝트. 간단히 DataSource는 DB Connection을 관리하는 인터페이스라고 생각하면 된다. 보통 getConnection() 등의 메소드를 지원함.