[업무 일지] 10/12) 기존의 테이블을 jpa로 변경하기(2) - one to one

zooju·2022년 10월 13일
0
post-custom-banner

10/12: user와 one to one 관계인 social 테이블을 jpa로 옮기기!

느낀점

one to one의 fk는 어디로 놓아야 하는가?

업무 일지

jpa를 전혀 모른 상태에서 테이블을 구성한 다음, jpa를 천천히 배우면서 테이블을 jpa entity로 해당할 수 있도록 코드 리팩토링중에 있다.
오늘은 user와 one to one 관계인 social을 옮기고자 했다.

공부를 하며 자료를 찾아보니 자료들과 내 테이블간에 설계적 차이가 있음을 발견했다.

나는 항상 1번처럼 테이블을 만들었다.
그 이유는 sql문 상에서 user ID로 검색하면 간단히 사용자의 소셜 정보를 불러올 수 있기 때문이다. 만약 user에 social idx를 넣었다면 sql로 짤 땐 user를 거쳐서 social로 가야하니 join을 사용해야 하고, 이것이 불편할 것이라고 생각했다.

하지만 동료 서버개발자분에게 물어본 결과 2번처럼 코딩하는게 jpa 사용시 이점이 많다는 것을 알게 되었다. 2번처럼 해야 [user 이름].social.twitter 이렇게 간단하게 접근 가능하기 때문이다.
jpa로 접근할 땐 1번처럼 하면 1) user id로 social 찾고 2) social.twitter 이렇게 두번 접근해야해서 불편하기 때문이다.

이를 위해 데이터베이스 구조부터 바꾸고 싶었지만

1) 이미 유저와 social 데이터가 많은 현재 상황에서는 어려운 일이라고 생각했고(user에 social idx 찾아서 다 넣어줘야하는데 그게 어려울 것 같다 + fk로 설정된 pk를 auto increment인 index와 swap해줘야하는데 시도해본 결과 이는 mysql상에선 어려웠다)

2) one to one 관계는 위의 테이블 하나 뿐이다.

와 같은 이유로 일단 넘어가기로 했다. 이번 리팩토링 이후 다음 사이클에 데이터 베이스 구조도 리팩토링을 진행해보면 좋을 것 같다고 생각했다.

profile
이것 저것 새로운 분야에 관심이 많은 서버 개발자
post-custom-banner

0개의 댓글