개발/고민과 생각

좋지 않은 테이블 구조에서의 개발

hojak99 2020. 11. 23. 22:11

좋지 않은 테이블 구조에서의 개발을 어떻게 해야할까..?

좋지 않은 테이블 구조라고 했는데 우선 정합성이 다 깨져버려있다는 것을 의미하고 있다.
그리고 특정 A, B 테이블의 의존관계가 1 : N 이 될 수도 있고, 1 : 1 이 될 수도 있다. 

백엔드에선 JPA, querydsl 을 사용해서 의존관계 맺어서 one to one, one to many 등을 이용해서 각 기능들을 구현하고 있었다.
그런데 테이블 구조가 썩 좋진 않다보니 쉽게 개발하려고 JPA 를 사용하는데 비즈니스 코드가 너무 복잡해지거나, 테이블 구조가 이상한데 이걸 다시 코드로 구현하자니 코드도 썩 좋지 않게 되는 것 같았다.

그래서 우선 각 엔티티 별로 모두 다 쪼개고 의존관계 맺지 않고 무조건 코드에서 각 엔티티를 조합해서 사용하는 식으로 구현을 했다.

예를 들어보겠다.
하나의 출판사에 여러 책이 존재한다고 했을 때 1:N 구조가 될 것이고 JPA oneToMany 이용해서 구현을 할 수 있을 것이다. 
lazy 든 eager 든 데이터를 가지고 오겠지만 우선 서버에서는 

출판사 조회 요청 -> 출판사 entity 조회 후 DTO 변환 -> 조회한 출판사에 대한 ID 를 책 테이블에서 조회 후 DTO 변환 ->
출판사 DTO, 책 DTO List 조합 -> 반환

이런 식으로 구현을 했다.

왜 이런 식으로 구현을 했느냐하면 그래야 나중에 테이블 정리하고 하더라도 비즈니스 로직까지 고치진 않게 하기 위함이다. 
그래서 entity, dto 로 convert 하는 부분만 바꾸면 잘 되게끔..? 

지금은 귀찮더라도 우선 이렇게 모두 분리한 다음에 정규화해서 졍규화시킨 테이블가지고 의존관계 맺어서 개발하는게 나중에 유지보수에도 좋을 것 같다라고 생각했다.


나중에 더 좋은 생각이 난다면 업데이트를 하도록 하겠다.

반응형