DAO (Data Access Object) - Database에 접근하는 역할을 하는 객체
● 프로젝트의 서비스 모델에 해당하는 부분과 데이터베이스를 연결하는 역할을 한다.
● 데이터의 CRUD 작업을 시행하는 클래스이다.
● 효율적인 커넥션 관리와 보안성을 위해 사용한다.
● DAO는 비즈니스 로직을 분리하여 도메인 로직으로부터 DB와 관련한 메커니즘을 숨기기 위해 사용한다.
// 1. DAO 인터페이스
// 2. DAO 인터페이스를 구현한 클래스
DTO (Data Transfer Object) - 데이터를 전달하기 위한 객체
● 로직을 가지지 않는 순수한 데이터 객체(getter & setter만 가진 클래스)
● 여러 레이어간 데이터를 주고 받을 때 사용할 수 있고 주로 View와 Controller 사이에서 활용한다.
● getter&setter외에 다른 비즈니스 로직은 포함하지 않는다.
● 어떻게 구현하느냐에 따라 가변 객체로 활용할 수도 있고 불변 객체(final)로 활용할 수도 있다.
+) 데이터를 변환하거나 담는 개념이며, 메서드를 사용할 수 있다.
VO (Value Object) - 값 자체를 표현하는 객체
● DTO와 유사하나 그와 달리 setter를 가지고 있지 않아서 값이 변할 일이 없다. (read-Only)
● getter()메소드를 포함해서 비즈니스 로직도 포함할 수 있다.
● "두 객체의 모든 필드 값들이 동일하면 두 객체는 같다"가 핵심 정의이다. 그렇기 때문에 완전히 값 자체 표현 용도로만 사용하는게 목적이라면 두 객체의 모든 필드 값들이 모두 같으면 같은 객체이도록 만드는 것(equals()와 hashCode()의 오버라이딩)이 중요한 것이지 메소드는 어떤 메소드가 있던지 상관 없다.
Entity
● 실제 DB테이블과 매핑이 되는 클래스
● 데이터를 전달하는 클래스로 사용하면 안된다.
● Entity를 기준으로 테이블이 형성되고 칼럼이 변경되고는 한다.
● 비즈니스 로직을 포함할 수도 있고, setter()메소드를 포함할 수도 있다.
'Java' 카테고리의 다른 글
Get, Post 요청 방식 이해하기 (1) | 2024.07.01 |
---|---|
Dynamic Web Project 1 (0) | 2024.06.29 |
JDBC 실습 - CRUD, SOLID, 성능최적화, SQL예외처리, HikariCP (0) | 2024.06.18 |
JDBC 트랜잭션 관리와 배치 처리 - 6 (1) | 2024.06.12 |
Parsing(파싱) (0) | 2024.06.10 |