본문 바로가기

프로그래밍/JSP

웹 어플리케이션 구조 - DAO , 서비스클래스 , 트랜잭션 , 예외처리 , 커넥션 풀

JSP -  어플리케이션 구조

- 기존의 JSP JAVA+ HTML 혼재 되어있다

- JAVA = 데이터를 받는 처리(사용자 요청 처리)

        = DB코드 (커넥션, 드라이버로드..Statement...)

→ JSP파일에서 중복코드가 발생한다. 이를 막기위해 구조화된 코드를 작성하자


JSP만을 이용하는 경우의 문제

- 코드의 중복, 유지보수불편 → 클래스로 이용해 중복제거!


클래스를 이용한 중복제거

 - JSP : 사용자요청, 응답View처리

 - 클래스 : 실제 로직을 수행 (서비스클래스- 핵심요청처리)

→ JSP 코드가 간결해지며 , 유지보수가 편해진다.


 어플리케이션의 일반적인 구성

- Service 클래스 : (핵심처리) 사용자의 요청을 처리하는 기능제공, DAO클래스로 DB연동

- DAO 클래스 : DB 관련된 CRUD작업을 처리 (SQL쿼리 실행)

- JSP() : Service 클래스의 실행결과를 화면에 출력, 필요한 데이터를 서비스클래스 전달

- MVC 프레임워크 : 

1. 사용자 요청을 받아서 Service 전달  (컨트롤러)

2. 처리할  있는 클래스를 찾아서 요청 

3. 응답 (View 형태)


DAO 구현

- CRUD 위한 메서드 정의

1) insert() 메서드 - INSERT 쿼리를 실행

2) select() 메서드 - SELECT 쿼리를 실행 , 검색 조건에 따라서   이상의 메서드 제공

3) update() 메서드 - UPDATE 쿼리를 실행

4) delete() 메서드 - DELETE 쿼리를 실행


 테이블과 매핑될 클래스 작성

DAO Connection 전달 방법

- DAO 클래스이 메서드 파라미터로 Connction 전달받기

1) 1 이상 DAO 메서드 호출을 트랜잭션으로 묶을  있음

2) DAO 객체를 매번 생성할 필요 없음 (싱클톤 패턴)


서비스 클래스 구현

사용자의 요청을 처리하기 위한 가능을 구현

- DAO 통해서 데이터에 접근


트랜잭션

- 서비스가 제공하는 기능이 트랜잭션 필요시

  Connection.setAutoCommit(false) 트랜잭션 처리


서비스 클래스의 예외처리

- 서비스 클래스의 메서드는 서비스가 제공하는 기능에 알맞는 예외 발생시키는 것이 좋음


싱글톤패턴 (서비스클래스/DAO클래스) 구현

싱글톤패턴 : 클래스 당 한개의 객체만 생성되도록 제약하는 구현 패턴

- 서비스나 DAO 매번 객체 생성할 필요가 없음 (변수는 필요없고, 기능한 구현했으므로)

- SPRING 프레임워크에서는 자동으로 싱글턴으로 구현해줌. (하나만 생성하고 재사용)


ConnectionProvider 구현

(커넥션 풀 초기화)

- 서비스에서 Connection 직접 생성할 경우 단점(DB를 사용하는 페이지에 직접 생성하는 경우)

1) JDBC URL , 변경될 경우 모든 코드를 변경할 가능성,

2) 유지보수에 불리   있기 때문에 ConnectionProvider클래스를 별도로 작성

→ 중복 코드를 막을 수 있고, 유지보수가 편해진다.