[Spring Basic] DAO Repository DTO VO Entity
DAO, Repository
데이터에 접근하기 위한 객체를 DAO (Data Access Object) 라고 한다.
DAO를 사용해 데이터베이스에 있는 테이블로부터 CRUD를 수행한다.
데이터베이스 테이블 하나당 하나의 DAO를 작성하고, Controller에서 DAO를 통해 데이터베이스를 다룬다.
컨트롤러에서 바로 데이터베이스에 접근하도록 할 수도 있지만, 이 경우 중복되는 메서드들이 많이 발생할 수 있다.
중복되는 내용을 DAO로 따로 정리해놓고, 컨트롤러가 DAO를 통해 데이터베이스에 접근하도록 하는 편이 합리적이다.
이를 계층의 분리라고 부르고 DAO는 Persistence Layer, 컨트롤러를 Presentation Layer라고 부른다.
DAO 계층에서 데이터베이스 연결, 쿼리 실행, 등 데이터베이스와 관련된 모든 작업을 처리한다.
Repository와 DAO는 모두 데이터베이스에 접근하는 디자인패턴이고, 데이터베이스와의 상호작용을 추상화한다.
Repostiory는 엔티티 객체를 보관하고 관리하는 저장소이고 DAO는 데이터베이스 접근 로직을 모아둔 객체라고 하는데... 개념의 차이일 뿐이고 실제 개발 시에는 비슷하게 사용된다.
DTO, VO
DTO (Data Transfer Object) 는 데이터를 전송하는 객체로, 클라이언트와 서버 간에 데이터를 전송할 때 사용된다.
비즈니스 로직을 가지면 안되고 데이터를 전송할 때만 사용해야 한다.
getter 및 setter만 메서드로 가진다.
VO (Value Object) 는 값 자체를 나타내는 객체로 한 번 생성되면 값을 변경할 수 없고 값을 비교할 때 객체 내부의 값이 같다면 같음으로 판단되어야 한다. (equals 와 hashCode 메서드를 오버라이드 해야 한다)
비즈니스 로직을 가질 수 있고 값을 비교할 때 사용된다.
Entity 는 JPA를 사용할 때 @Entity 애너테이션을 붙여서 생성하는 객체로 데이터베이스의 테이블과 1:1로 매핑된다.
일부 상황에서는 Entity를 DTO 또는 VO처럼 사용하기도 한다.
'Spring > Spring' 카테고리의 다른 글
[Spring Basic] 동기와 비동기 (0) | 2022.07.15 |
---|---|
[Spring Basic] MyBatis (0) | 2022.07.12 |
[Spring Basic] JUnit Test Framework (0) | 2022.07.09 |
[Spring Basic] 파라미터의 변환과 검증 (0) | 2022.06.24 |
[Spring Basic] DispatcherServlet (0) | 2022.06.23 |
댓글
이 글 공유하기
다른 글
-
[Spring Basic] 동기와 비동기
[Spring Basic] 동기와 비동기
2022.07.15 -
[Spring Basic] MyBatis
[Spring Basic] MyBatis
2022.07.12 -
[Spring Basic] JUnit Test Framework
[Spring Basic] JUnit Test Framework
2022.07.09 -
[Spring Basic] 파라미터의 변환과 검증
[Spring Basic] 파라미터의 변환과 검증
2022.06.24