본문 바로가기

개발일지(일간)

22년 12월 26일

정적 팩토리 메서드를 적용해서 Dto를 반환하는 코드를 캡슐화 해보았다.

프로젝트에서 Dto를 반환하는 코드가 반복되었기 때문에 Dto를 반환하는 코드를 캡슐화 하였고,

Dto를 반환하는 코드를 캡슐화 하기 위해 적용한 방법은 Dto의 값을 보내주는 엔티티에서 메서드를 통해 Dto로 가공해 보내주고, 서비스에서 받아온 Dto를 반환하는 방식이었다.

Dto를 서비스로 반환하는 메서드

바뀐 코드는 다음과 같다. 메서드의 위치는 엔티티에서 Dto로 바뀌었다.

일단 기존 메서드를 만들때 실수 한 것이 있다. Dto를 반환하는 코드인데 엔티티에 메서드가 있었다는 점이다.

메서드를 호출하려면 인스턴스가 생성되어 있어야 하는데, Dto에 메서드를 생성하면, Dto 메서드를 사용하기 위해 Dto의 인스턴스를 생성하야한다.

그러면 코드도 지저분해지고, 캡슐화를 하는 의미가 없어진다고 생각해 레파지토리에서 원하는 값을 호출하면서 생성되는 엔티티의 인스턴스를 이용하기 위해 엔티티에 메서드를 만들었다.

이는 static에 대해서 무지했기에 했던 실수였다.

static을 사용한 정적 메소드는 클래스가 메모리에 올라갈 때 정적 메소드가 자동적으로 생성되기 때문에 인스턴스를 생성하지 않아도 호출 할 수 있다.

때문에 정적 팩토리 메서드를 사용하면 인스턴스를 더 추가로 생성할 필요도 없고, Dto생성과 관련된 책임을 엔티티 클래스가 가질 필요도 없다.

 

자바 기초에 대한 이해가 아직도 많이 부족하다는 생각이 들었다. 지금까지 한참 프로젝트를 만드는 데에만 집중했는데, 알맹이가 빈 껍데기를 만드는데 집중했다는 생각도 들었다.

그동안 스프링 부트 프로젝트를 만드는데만 집중해 자바 공부를 많이 하지 않았는데, 앞으로는 자바에 대한 공부도 더 해 볼 생각이다.

 

'개발일지(일간)' 카테고리의 다른 글

22년 12월 28일 트랜잭션  (0) 2022.12.28
22년 12월 27일  (0) 2022.12.27
22년 12월 23일  (0) 2022.12.23
2022년 12월 22일  (0) 2022.12.22
22년 12월 21일  (0) 2022.12.22