쿠폰 dto간 의존성 줄이기

kihoo_ni·2024년 7월 7일

북스토어프로젝트

목록 보기
9/14

문제점

프로젝트 초기 dto에 대한 개념이 부족했을때 코드를 쉽게짜고 싶어서 dto간 무분별하게 의존성을 높히는 식으로 코드를 구현했다.



public record CouponTemplateResponseDTO(
	Long id,
	CouponPolicyResponseDTO couponPolicy,


	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
	LocalDateTime expiredDate,


	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
	LocalDateTime issueDate
) {

	}
    
    
    public record UserAndCouponResponseDTO(
	Long id,
	CouponPolicyResponseDTO couponPolicyResponseDTO,
	Long userId,

	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
	LocalDateTime usedDate,

	Boolean isUsed,
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
	LocalDateTime expiredDate,

	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
	LocalDateTime issueDate

) {
}

보이는 것처럼 CouponTemplateResponseDTO, UserAndCouponResponseDTO가 CouponPolicyResponseDTO를 담고있는 형태로 구현했는데
이런식으로 코드를 구현하면 dto간 의존성이 커지고 entity처럼 연관관계가 있는 테이블을 연상시키므로 데이터전송객체로서의 의미가 사라지게된다.
따라서 이런방식을 탈피하기 위해 다음과 같이 의존성을 제거해주었다.

개선방안

현재 쿠폰어플리케이션에 있는 모든 dto간 의존성을 제거하고, 각 repository에서 요구하는 dto의 속성에 맞게끔 여러개의 dto를 만들어주는 방식으로 개선하였다.

0개의 댓글