[Spring]스프링 패키지 구조

chaeyoung·2023년 9월 1일
0

Backend

목록 보기
1/1

Spring Package구조

Entity

Entity는 DB table에 존재하는 column들을 필드로 가지는 객체를 뜻함. DB 테이블과 1대 1대응이며 테이블을 가지지 않는 칼럼을 필드로 가지지 못함. 또한 Entity 클래스는 다른 클래스를 상속, 인터페이스 구현체여선 안되고 순수한 데이터 객체인 것이 좋다

@Entity
public class Employee{
	@Id
    private Long id;
    private String name;
}
  • id, name = column
  • Entity Class = Employee 또한 이와 같은 필드만 가져야함

DTO(Data Transfer Object)

데이터를 Transfer(이동)하기 위한 객체이다.
Client가 Controller에 요청을 보낼 때 RequestDto 형식으로 데이터가 이동하고, Controller가 Client에게 응답을 보낼 때도 ResponseDto 형태로 데이터를 보내게 된다.

Controller와 Service, Repository 계층 사이에 데이터 오갈때도 데이터는 DTO 형태로 이동한다.
Dto는 로직을 갖고 있지 않은 순수한 데이터 객체이며 getter/ setter 메소드만 가진다

  • DTO 사용 이유?
    Entity객체 그대로 사용하지 않고 DTO로 전달하는 이유?
    • 객체를 표현하기 위한 계층과 저장하는 계층의 역할을 분리시키기 위함
    • Entity객체를 그대로 사용하면 데이터가 변질될 수 있다.
    • ResponseDTO, RequestDTO는 요구사항에 따라 자주 변경되어 Entity클래스와 분리하여 관리

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를 이용하여 데이터 관리도 가능

0개의 댓글