인프런 커뮤니티 질문&답변

유재민님의 프로필 이미지
유재민

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

엔티티 클래스 개발1

Enum 이름이 변경되었을 때 DB에 미치는 영향

작성

·

371

·

수정됨

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예

[질문 내용]
Order가 OrderStatus를 인스턴스 변수로 가지고 있는, 즉, 한 Entity가 Enum 타입의 객체를 가지고 있는 상황에 대해 질문 드리겠습니다.

@Enumerated(EnumType.STRING)와 같이 매핑함으로써 DB 컬럼에는 'ORDER', 'CANCEL'과 같은 Enum 이름으로 저장된다는 것을 알겠습니다.

그리고 주문을 주문 상태 기준으로 조회할 때는 select from order where order_status = order과 같은 쿼리를 통해 조회하게 될 것 같습니다.

이때, 자바 코드에서 주문된 상태를 의미하는 ORDER 이름을 A_ORDER라는 이름으로 변경한다고 가정하겠습니다.
(OrderStatus Enum의 이름을 변경)

변경 시점 이후로는 주문을 저장하면 order.order_status 컬럼에 A_ORDER가 저장되고, 그 이전까지의 order.order_status 컬럼은 ORDER로 여전히 남아 있을 것 같습니다.

그렇다면 주문 상태 기준으로 조회를 할 때 ORDER와 A_ORDER 모두 주문된 상태를 의미하기 때문에, SELECT FROM order WHERE order_status = order OR order_status = a_order와 같이 조회해야 될 것 같습니다.

제가 생각하기로는 enum 이름을 A_ORDER로 바꿨기 때문에 조회 쿼리의 조건 역시 A_ORDER 하나로만 조회되는 게 자연스러울 것 같습니다.

즉, 제가 생각한 선택지는 총 2가지입니다.

  1. 기존의 order로 남아 있는 row들을 update 쿼리를 통해 a_order로 수정한다. (직접 쿼리 작성)

  2. 조회할 때 order와 a_order를 함께 where문에 넣어주면서 조회

어떤 선택지가 더 좋다고 생각하시나요?? enum 이름이 변경되는 것을 가정하는 게 크게 의미없는 생각인가 싶지만, 궁금증이 생겨 질문드립니다!

답변 1

0

안녕하세요. 유재민님, 공식 서포터즈 David입니다.

해당 데이터에 의존하고 있는 코드가 어떻게 작성되어 있는지에 따라 다를 것 같습니다.

정말 단순하게 생각해보자면 특정 API가 order_status를 제공하고 있고 'Order'라고 응답되는 것이 약속된 값이라면 Order를 마음대로 바꾸는 것은 쉽지 않을 것 같습니다.

따라서, 의존하고 있는 것들을 생각했을 때 바꿔도 괜찮다면 기존 데이터를 업데이트 해도 된다고 생각합니다.

감사합니다.


유재민님의 프로필 이미지
유재민

작성한 질문수

질문하기