enum과 @Embeddable의 차이점

seokseungmin·2024년 10월 15일

Today I Learned

목록 보기
3/20

Roleenum으로 만드는 방식은 매우 적절한 선택입니다. 특히, 권한(역할)과 같은 고정된 값enum을 사용하여 표현하는 것이 더 자연스럽고, 유지보수 측면에서도 장점이 있습니다. @Embeddable 타입은 다른 목적을 가진 것이며, Role과 같은 경우에는 enum이 더 적합합니다.

enum@Embeddable의 차이점

  1. enum:

    • 용도: 제한된 집합의 상수 값을 정의할 때 사용합니다. 권한(Role), 상태(Status), 방향(Direction) 등의 값을 표현하기에 적합합니다.
    • 장점: 코드가 더 간결해지고, 상수값을 실수로 잘못 사용하는 경우를 방지할 수 있습니다. 또한, 값의 범위가 고정되어 있기 때문에 컴파일 타임에 오류를 잡을 수 있습니다.
    • 예시: 권한(Role), 주문 상태(Order Status) 등.
  2. @Embeddable:

    • 용도: 엔티티 내에서 다른 객체로 표현될 수 있는 값 객체를 정의할 때 사용합니다. 일반적으로, @Embeddable은 엔티티의 일부분이면서 독립적인 개념을 가진 객체를 표현할 때 사용합니다.
    • 장점: 여러 필드의 값을 하나의 객체로 묶을 수 있어 복잡한 엔티티 구조를 보다 명확하게 표현할 수 있습니다. 데이터베이스에는 개별 필드로 저장되지만 코드에서는 하나의 객체로 취급할 수 있습니다.
    • 예시: 주소(Address), 기간(Period), 좌표(Coordinate) 등의 복합 값 객체.

Role에 대해 @Embeddable을 사용할 필요가 없는 이유:

  • Role은 단순히 고정된 값(사용자, 관리자, 익명 등)을 나타내는 권한의 범주입니다. 이는 값이 몇 개로 한정되어 있기 때문에 enum이 적합합니다.
  • @Embeddable은 보통 여러 필드를 가지는 복합 값 타입을 표현하는데 사용되며, Role처럼 단순한 상수 집합을 표현할 때는 적절하지 않습니다.

결론:

  • Role 같은 고정된 값의 경우 enum을 사용하는 것이 맞습니다.
  • @Embeddable은 여러 필드를 포함하는 복합 객체를 엔티티에 포함하고자 할 때 사용하는 것이며, 권한(Role)처럼 단순한 경우에는 사용하지 않습니다.

따라서 현재처럼 enum을 사용하는 방식이 권장되며, 잘 설계하셨습니다!

profile

0개의 댓글