개발자
[JPA] SOLID원칙 (request,response용 데이터 클래스를 command,DTO로 나누어서 사용한 이유) 본문
[JPA] SOLID원칙 (request,response용 데이터 클래스를 command,DTO로 나누어서 사용한 이유)
GoGo개발 2023. 3. 25. 17:18jpa를 사용할때 entity 클래스와 request 응답데이터를 받는 command클래스 응답값을 내려주는 VO클래스로 나누어서 사용하고있는데 command와 vo를 나눠서 사용하는 경우와 vo로 응답데이터를 받고 내려주는 역할까지 하는 것에 차이
Entity 클래스는 데이터베이스와 매핑되는 클래스이고, Request 응답 데이터를 받는 Command 클래스와 응답값을 내려주는 VO 클래스는 비즈니스 로직과 UI 레이어에서 사용되는 클래스
일반적으로 Entity 클래스는 데이터베이스와의 매핑을 위한 속성과 매핑 정보를 포함합니다. Command 클래스는 클라이언트에서 전달받은 요청 데이터를 매핑하고, 비즈니스 로직을 처리하여 Entity 객체를 생성하거나 수정하는 등의 역할을 수행합니다. VO 클래스는 Entity 객체를 클라이언트에 반환하기 위한 데이터를 담는 클래스로, UI 레이어에서 사용
Command 클래스와 VO 클래스를 분리하여 사용하는 것은 SOLID 원칙 중 단일 책임 원칙(Single Responsibility Principle)을 따르기 위함입니다. Command 클래스는 클라이언트에서 전달받은 요청 데이터를 처리하고, 비즈니스 로직을 실행하는 책임을 가지며, VO 클래스는 Entity 객체를 클라이언트에 반환하기 위한 책임을 가집니다. 이렇게 역할을 분리하면 코드 유지 보수성과 확장성이 향상
하지만 Command 클래스가 VO 클래스의 역할을 수행한다면, 위에서 말한 단일 책임 원칙에 어긋. 또한, 클라이언트가 필요하지 않은 정보까지 반환하는 경우도 발생할 수 있으므로 보안상의 이슈
따라서, Entity 클래스, Command 클래스, VO 클래스를 각각 분리하여 사용
'개발자 > workflow 리팩토링 프로젝트(SpringBoot,JPA,MySQL)' 카테고리의 다른 글
[class] 내부 클래스, 내부 static 클래스 (0) | 2023.05.02 |
---|---|
[JPA] Bean vaildation - @Eamil, @NotNull @NotEmpty @NotBlank (0) | 2023.03.25 |
[JPA] exception handling(예외 처리)/error 분류 (0) | 2023.03.21 |
♣[WF/Spring] 의존성 주입(생성자주입/필드주입/수정자주입)/JPA에서 Lombok 이용한 의존성 주입 (0) | 2023.02.22 |
[RESTful API]예제 실습 (0) | 2023.02.22 |