DTO
-
DTO와 VO 그리고 EntityJAVA/Java 2021. 12. 13. 17:31
계층간 데이터를 주고 받을 때, 소통하는 계층에 따라서 값을 전달하는 객체의 형태는 달라진다. DTO Data Transfer Object로서 계층간 데이터 교환을 위하여 사용하는 객체 이다. DB의 데이터를 Service나 Controller (즉, Presentation Layer)와 주고 받을 때 사용된다. Client와 바로 접해있는 View 계층에서는 정보가 자주 변경되기 때문에 변경이 이루어 질때마다 바로 DB와 연결된 Entity를 변경하고자 한다면 이와 의존관계에 놓인 많은 다른 클래스에도 영향을 미치기 때문에 영향받지 않고 자유롭게 변경 가능한 DTO를 사용하게 된다. 이는 로직을 가지고 있지 않은 순수한 데이터 객체 이며 getter / setter 메서드 만 을 가진다. Control..
-
DTO를 통해 mapping된 엔티티 데이터 묶어서 보내기 ( + 순환참조 방지 DTO)Spring 2021. 10. 26. 14:17
DTO를 통해 엔티티 정보와 함께 참조된 데이터를 백엔드에서 프론트엔드로 보내고자 할 때, 일일이 나열하여 하나씩 데이터를 보내는 것이 아닌 json객체의 형식과 같이 데이터 안에 데이터 묶음으로 전하고자 하였다. 엔티티 mapping 상태 @Entity @Table(name = "user") @Getter @Setter @NoArgsConstructor public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Column(name = "firstname", nullable = false, length = 45) private String firstname; @Column(name = "l..
-
DTO 사용범위Spring 2021. 9. 5. 21:56
데이터를 클라이언트와 서버가 주고받을 때 DTO를 사용하다보니, DTO의 사용범위가 controller와 service사이에서 어디까지 사용하는 것이 옳은 것일까하는 의문이 들었다. DTO DTO는 Data Transfer Object로 계층간 데이터 교환을 위해서 사용하는 객체이다. 엔티티를 그대로 외부에 노출하게 되면, 모든 속성이 노출되고 엔티티가 변경될 위험이 있기 때문에 model, view 분리원칙에도 영향이 갈 수 있다. DTO를 사용해서 model정보를 캡슐화하고 선택적 정보선택을 통해서 꼭 필요한 정보만 보내주도록 해준다. Service layer 다음의 블로그 글을 읽고 controller가 사용되지 않는 model정보를 추가로 가져오고 이용해서 여러 service에 의존해서 DTO를 ..