Entity
Entity는 DB table에 존재하는 column들을 필드로 가지는 객체를 뜻함. DB 테이블과 1대 1대응이며 테이블을 가지지 않는 칼럼을 필드로 가지지 못함. 또한 Entity 클래스는 다른 클래스를 상속, 인터페이스 구현체여선 안되고 순수한 데이터 객체인 것이 좋다
@Entity
public class Employee{
@Id
private Long id;
private String name;
}
DTO(Data Transfer Object)
데이터를 Transfer(이동)하기 위한 객체이다.
Client가 Controller에 요청을 보낼 때 RequestDto 형식으로 데이터가 이동하고, Controller가 Client에게 응답을 보낼 때도 ResponseDto 형태로 데이터를 보내게 된다.
Controller와 Service, Repository 계층 사이에 데이터 오갈때도 데이터는 DTO 형태로 이동한다.
Dto는 로직을 갖고 있지 않은 순수한 데이터 객체이며 getter/ setter 메소드만 가진다
DAO(Data Access Object)
실제 DB에 접근하는 객체, DAO는 Service와 실제 데이터 베이스를 연결하는 역할을 한다. 즉, DB에서 데이터를 꺼내오거나 넣는 역할
Controller
client요청을 DTO형태로 받아 Service 기능 호출 -> 적절한 응답을 DTO형태로 반환
(요청과 응답을 관리하는 계층)
Service
DTO를 통해 받은 데이터를 이용해 비즈니스 로직을 처리하고 DAO or Repository를 통해 DB로 접근해 데이터를 관리하는 역할
Respository(DAO)
JPA를 사용하면 Repository를 통해 DB에 실제로 접근할 수 있다.
Service와 DB를 연결해주는 역할, Service계층에서 Repository를 이용하여 데이터 관리도 가능