3-tier 아키텍처(service > dao > db)
service > dao > db 구조는 3-tier 아키텍처에서 자주 사용되는 패턴 중 하나.
서비스 계층, 데이터 접근 계층(DAO), 데이터베이스(DB)로 구분된 구조를 의미한다.
이 구조에서 JDBC를 사용하여 DAO가 데이터베이스와 상호작용한다.
이 과정은 아래와 같은 흐름으로 설명할 수 있다.
1. Service 계층
- 애플리케이션의 비즈니스 로직을 처리하는 부분.
- 사용자의 요청을 받고, 그 요청에 맞는 처리를 수행 후 필요한 데이터를 DAO 계층을 통해 가져온다.
- 서비스 계층은 보통 클라이언트(예: 웹 브라우저나 모바일 앱)와 DAO 계층 사이에 위치하며, 데이터 처리, 트랜잭션 관리 등을 담당한다.
* 예시 : 사용자가 회원 가입을 요청하면, 서비스 계층은 입력된 정보를 검증하고 필요한 처리를 한 후 DAO 계층을 통해 데이터베이스에 저장 요청을 한다.
2. DAO (Data Access Object) 계층
- DAO 계층은 데이터베이스에 접근하기 위한 로직을 담당한다.
- DAO는 서비스 계층과 데이터베이스 사이의 중간 다리 역할.
- SQL 쿼리를 작성하고, JDBC를 통해 데이터베이스 연결, 쿼리 실행, 결과 처리 등을 담당한다.
- 이 계층은 비즈니스 로직에서 데이터베이스와의 상호작용을 분리하여 코드를 더 깔끔하고 유지보수하기 쉽게 만들어준다.
* 예시 : 서비스 계층에서 새로운 사용자를 추가할 때, DAO는 해당 SQL INSERT 쿼리를 작성하고 실행하여 데이터베이스에 사용자를 저장합니다.
3. DB (Database)
- DB는 실제 데이터를 저장.
- 여기서는 관계형 데이터베이스가 될 수 있으며, JDBC를 통해 DAO 계층에서 이 데이터베이스와 통신한다.
- 데이터베이스는 CRUD(Create, Read, Update, Delete) 연산을 통해 데이터를 관리한다.
* 예시: DAO 계층에서 JDBC를 통해 SQL 쿼리를 실행하면, 데이터베이스는 해당 쿼리를 처리하고 결과를 반환한다.
>> 작동 흐름 (Request와 Response 흐름) <<
1. 클라이언트 요청 (Service 계층): 사용자가 웹 애플리케이션을 통해 특정 요청을 보낸다 (예: 로그인 요청).
2. Service 계층: 서비스 계층에서 해당 요청을 처리. 예를 들어, 사용자가 로그인을 요청하면 서비스 계층에서 사용자가 입력한 아이디와 비밀번호를 검증한다.
3. DAO 계층 호출: 서비스 계층은 검증된 데이터를 바탕으로 DAO에 요청을 전달하여 데이터베이스에 접근하게 한다. 여기서 JDBC를 통해 데이터베이스에 SQL 쿼리가 실행된다.
4. DB와 상호작용 (DAO 계층에서 JDBC 사용): DAO는 JDBC를 사용하여 데이터베이스에 직접 쿼리를 보내고, 그 결과를 받아온다 (예: SELECT 쿼리로 사용자 정보를 조회).
5. DAO가 결과 반환: 데이터베이스에서 결과가 반환되면, DAO 계층이 그 데이터를 가공하여 서비스 계층으로 반환한다.
6. Service 계층에서 로직 처리 후 클라이언트로 응답: 서비스 계층은 DAO 계층에서 받은 데이터를 다시 비즈니스 로직에 맞게 처리한 후, 클라이언트에 응답을 보낸다.
JDBC (Java Database Connectivity)
- JDBC는 Java에서 데이터베이스와 연결할 수 있게 해주는 API.
- DAO 계층에서 데이터베이스에 접근할 때 JDBC를 사용하여 SQL 쿼리를 실행하고, 그 결과를 받아 처리.
- JDBC는 데이터베이스와의 연결을 열고, SQL 쿼리를 실행하며, 데이터를 주고받고, 연결을 종료하는 과정을 담당
전체 흐름 요약
- Service 계층: 클라이언트 요청을 받아 비즈니스 로직을 처리하고 DAO를 통해 데이터베이스에 접근.
- DAO 계층: 데이터베이스와의 상호작용을 처리하는 계층. JDBC를 통해 SQL 쿼리를 실행하고 그 결과를 받아온다.
- DB 계층: 실제 데이터를 저장하고 관리하는 데이터베이스.