공통 코드 VS Enum 클래스
1
1 asked
DB에 공통 코드를 저장하는 테이블을 만드는 것과 코드에서 Enum 클래스를 만들어서 관리하는 것 중 어떤 방법이 더 괜찮은걸까요??
각 방식의 장단점이 있을까요??
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다.
꼬여사님, 공통 코드를 DB 테이블로 관리할지 Enum으로 관리할지는 코드 값이 변경되는 주체와 변경 빈도를 기준으로 판단하는 것이 좋습니다.
Enum이 적합한 경우
- 주문 상태, 회원 권한, 결제 상태처럼 비즈니스 의미가 명확한 값
- 개발 시점에 값이 정해져 있고 자주 변경되지 않는 경우
- 코드의 타입 안정성과 가독성, 유지보수성이 중요한 경우
- 주문 상태, 회원 권한, 결제 상태처럼 비즈니스 의미가 명확한 값
공통 코드 테이블이 적합한 경우
- 운영 중 관리자 화면에서 코드를 추가·수정해야 하는 경우
- 서비스 운영 중 코드 변경이 필요하고 배포 없이 즉시 반영해야 하는 경우
- 여러 서비스나 외부 시스템에서 코드 목록을 동적으로 공유해야 하는 경우
- 운영 중 관리자 화면에서 코드를 추가·수정해야 하는 경우
김영한 강사님은 일반적으로 JPA를 사용할 때 애플리케이션 코드의 의미를 명확하게 표현할 수 있는 Enum을 우선 권장하고 있습니다. 반면 운영 중 동적으로 변경되어야 하는 값이라면 DB 테이블로 관리하고, 조회 빈도가 높을 경우 캐시를 활용하는 방식을 안내하고 있습니다.
관련 답변을 참고해 보세요.
공통 코드 테이블을 운영 할 경우 엔티티 설계를 어떻게 하는게 좋을까요?
공통 코드와 비즈니스 엔티티를 무조건 연관관계로 매핑하기보다는, 변경이 적고 비즈니스 의미가 중요한 값은 Enum으로 관리하는 것이 좋다는 답변입니다.권한 코드테이블이 있을 때 equals 질문 드립니다.
권한이나 주문 상태처럼 시스템적으로 의미가 정해진 값은 Enum으로 관리하고, 운영자가 동적으로 추가해야 하는 값은 테이블로 관리하는 기준을 설명하고 있습니다.코드테이블 조인방법이 궁금합니다.
코드 테이블을 사용해야 한다면 매번 여러 테이블을 조인하기보다는 공통 코드 서비스를 통해 조회하거나 캐시하는 방법을 참고할 수 있습니다.ItemType 같이 enum 으로 관리되는게 변경의 여지가 있다면 코드테이블로 관리하는게 좋을까요?
서비스 운영 중 코드가 실시간으로 변경되어야 한다면 DB 테이블을 사용하고, 성능 문제가 있을 때 캐시를 적용하는 방법에 대한 답변입니다.
정리하면, 변경이 거의 없고 코드 자체가 도메인의 중요한 의미를 가지면 Enum, 운영 중 동적으로 추가·수정되어야 하면 DB 공통 코드 테이블을 선택하시면 됩니다. 두 방식을 무조건 하나로 통일하기보다는 코드의 성격에 따라 나누어 사용하는 것이 좋습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
극단적으로 from-to가 12일 이고, valid_to가 13일이면?
0
36
1
상태 기반 데이터관리에서 특정 시점에 대한 정보는 어떻게 관리할 수 있나요?
0
66
1
공통 코드 , 계층 구조 질문
1
101
1
공통코드 관련한 질문 드립니다.
0
117
1
다음 강의는 언제쯤 나올까요?
1
164
2
실제 FK제약조건을 설정하지 않는이유
0
138
2
히스토리 관련 질문
0
103
2
통계 데이터 수정 질문
1
125
2
공통 코드에서 Redis Pub/Sub은 최근 실무에서 쓰이진 않나요?
0
212
2
DELETE -> SELECT 질문 드립니다.
0
95
1
상속 관계 모델링의 적용 기준 질문
0
114
1
TTL 캐싱에 대한 질문
0
155
1
공통 코드 사용시 컬럼 타입 설정
0
148
1
history_creted_at과 valid_from
1
113
2
함수 기반 인덱스 (Function-Based Index)
0
138
1
추후 강의 질문있습니다
0
174
2
실무 통계 질문(고민) 드립니다..!
0
149
2
Json 컬럼의 객체 맵핑
0
107
1
[Deprecated] 오타 제보
0
144
1
오타 제보
0
107
2
category_path 테이블에서 idx_descendant 인덱스를 생성하는 이유가 궁금합니다
0
157
2
물리적으로 외래 키 제약 조건을 설정하지 않을 때
0
143
1
`전체 행 스냅샷 이력 테이블`의 대상 테이블 칼럼 변경
2
131
1
common_code_detail의 code 변경 가능성
1
160
1

