-
room과 retrofit을 사용하며 하나의 mapper를 사용하고 싶을 때프로젝트 기록/내날씨(OwnWeather) 2023. 7. 27. 00:26
문제
retrofit과 room은 지금의 안드로이드에 있어서 정말 없어서 안 될 존재이다.
다른 라이브러리들도 많지만 이정도로 간결하게 쓸 수있으면서도 대중적으로 쓰는 안드로이드 라이브러리는 없을 것 같다.보통 두 라이브러리를 같이 쓰는 경우에 room으로 retrofit의 통신 결과를 캐싱하는 경우가 많은데,
이 때 조금 불편한 문제가 발생한다.바로 정확히 같은 데이터를 저장함에도 entity와 dto클래스를 따로 생성해줘야 한다는 점이다.
심지어 나는 기상청 api대응 문제로 2개의 entity와 1개의 dto를 만들어서 정확히 같은 데이터를 갖는 클래스가 3개나 있다.같은 데이터를 받지만 라이브러리에 대응하기 위해 위와 같이 이름만 다른 클래스를 만들어 줘야 했다.
그래서 domain단으로 넘기기 위해 완벽히 같은 동작을 하는 Mapper메소드를 3개나 만들어 줘야하는 상황이었다.
(실제로 거의 작성 직전까지 갔다...ㅎㅎ)해결
해결방법은 정말 간단했다.
객체지향언어에 대한 공부를 안한 스스로를 자책할 정도....바로 위와 같은 인터페이스를 상속해
List<UltraShortForecastEntity>.toDomain()
List<ShortForecastEntity>.toDomain()
List<ForecastWeatherDtoItem>.toDomain()같이 세개나 생성하는 것이 아니라
List<ForecastWeatherDataModel>.toDomain()
메소드 한번으로 세개의 클래스를 도메인레이어로 넘기는 작업이 가능해졌다.느낀점
웹을 하든 앱을하든 어떤 개발을 하던 이론, 언어 자체에 대한 공부도 잘하자...
'프로젝트 기록 > 내날씨(OwnWeather)' 카테고리의 다른 글
getBaseDate 버그 fix (0) 2023.07.27 기상청api 단기예보 basetime 생성 방법 (0) 2023.07.27 getBaseDate메서드 문제 (0) 2023.07.26 기상청 날씨 데이터 전환 고민 (0) 2023.07.26