에러 탈출 일지
비즈니스 컴포넌트(Service, ServiceImpl, DAO) 본문
< AOP 실습을 위한 비즈니스 컴포넌트(Service, ServiceImpl, DAO) >
1. MVC패턴(Model View Contriller)
(1) Model(비즈니스 컴포넌트)
- 구성: 보편적으로 Service 인터페이스, Service를 구현한 ServiceImpl. DB에 직접 접근하는 DAO
- 모든 프로젝트가 위 방식으로 구성되지는 않는다.
(2) View(화면단)
- Spring Framework에서는 JSP가 화면단을 담당
- Spring Boot에서는 HTML, React, Vue 등등이 화면단을 담당
(3) Controller(서블릿)
- View와 Model을 연결해주는 역할.
- View에서 넘어오는 데이터를 받아서 비즈니스 로직(Model)로 전달
- 비즈니스 로직 처리가 완료된 데이터를 View로 넘겨주고 해당 View를 호출
2. DB 연동 방식 - JDBC / DBCP / JNDI
(1) JDBC (Java DataVase Connectivity)
- 자바에서 제공해주는 DB 연결 표준 API
- connection pool을 생성하지 않고 DB 연결 요청이 올 때마다 연결을 하나씩 생성
- 많은 사용자들이 DB 연결을 요청하면 연결 개수가 증가해서, DB 서버의 과부화나 웹 어플리케이션의 메모리 부족 문제 발생
- 비효율적인 방식으로 일반 상용 어플리케이션에서는 거의 사용X

(2) DBCP (DateBase Connection Pool)
- Web Application에서 미리 지정한 개수만큼의 DB커 넥션을 만들어서 Pool에서 관리.
- DB 접근 요청이 오면 DB 커넥션을 하나씩 대여해 준다.
- DB 접근 요청이 끝나게 되면 대여해준 DB 커넥션을 다시 돌려받는 방식.
- DBCP 상속받은 DateSource 객체가 DB 커넥션들을 관리
- DB 커넥션의 개수를 적절하게 지정하는 것이 중요

(3) JNDI (Java Naming and Directory Interface)
- Web Application이 아닌 WAS(Web Application Server)에서 DB Connection Pool을 생성하고 관리.
- 설정이 간편하여, Web Application의 과부화 방지 가능.
- 가장 많이 사용

3. pom.xml의 라이브러리와 의존성
- pom.xml의 라이브러리가 변경되면 프로젝트 전체에 영향을 주기 때문에 프로젝트가 라이브러리에 의존되어 있다.
- 의존성 주입: pom.xml에 라이브러리를 참조하는 것 → <dependency> 엘리먼트를 이용해서 설정한다.
4. 영속성(persistence)
- 영속성이란? 어플리케이션이 종료되도 계속 저장되어 있는 데이터의 특성을 의미함.
- 영속성을 따라 DB에서 어플리케이션을 연동하여 사용한다.
- 영속성은 JDBC를 통해 구현된다.
- 영속성 구현하는 방식: SQLMapping방식, ORM방식
(1) SQLMapping:
- 쿼리를 Mapping에 직접 매핑하여 사용하는 방식
- 대표 프레임워크: MyBatis, iBatis
- 테이블과 1대 1로 매핑되는 객체: VO(Value Object), DTO(Date Transfer Object)
(2) ORM(Object Relation Mapping):
- 테이블들간의 연관관계를 객체로 매핑시켜서 사용하는 방식
- 대표 프레임워크: hibernate
- 테이블과 1대 1로 매핑되는 객체: Entity(테이블간의 관계도 설정)
▷ 자바의 메소드 정의
- 접근제어자(public, private, protected, default) 반환타입(return타입) 메소드명(매개변수) {
메소드 구현
반환타입이 void → return값이 없다.
반환타입이 void 외에 데이터타입이나 클래스로 지정될 경우 → return 반환타입과 일치해야 된다.
}
'개발 > SpringFramework' 카테고리의 다른 글
| JSTL(Jsp Standard Tag Library) (0) | 2022.11.17 |
|---|---|
| 트랜잭션 (0) | 2022.11.16 |
| AOP (0) | 2022.11.15 |
| IoC 컨테이너 (0) | 2022.11.11 |
| Spring Framework (0) | 2022.11.11 |