[투표] JPA Enum 처리 방식 결정 (제어 레벨 및 저장 타입) #35
Closed
mainlib990
started this conversation in
Polls
Replies: 2 comments
-
|
Application level과 DB level에서 제어는 취향차이라고 생각합니다. 그래서 Application level에서 처리하며, Enum에 들어갈 값들이 적었기에 문자로 저장을해도 공간효율성에 크게 영향을 미치지 않을것 같습니다. 그렇기에 2번을 골랐습니다 |
Beta Was this translation helpful? Give feedback.
0 replies
-
|
저희가 이미 엔티티를 설계하면서 DB 단에서 참조 무결성을 검증하는 대신, 애플리케이션 단에서 검증 로직으로 무결성을 체크하도록 합의된 바가 있으니, 통일성을 위해 애플리케이션 레벨에서 일관적으로 검증하는 것이 좋다고 생각합니다. 그리고 다른 분들의 코드도 보았는데 Enum 이름은 코드잇에서 제공한 값을 따르고 있고, 마이그레이션 가능성은 없다고 판단하여 2번을 지지합니다. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
안녕하세요, 팀원 여러분.
JPA에서 Enum 값을 데이터베이스에 저장하는 방식은 데이터의 무결성, 가독성, 성능 및 유지보수성에 큰 영향을 미칩니다. 특히 Enum 값의 유효성 검증을 Application 레벨에서 할 것인지, DB 레벨에서 할 것인지를 기준으로, 각 제어 레벨 내에서 숫자 또는 문자열 중 어떤 형태로 저장할 것인지를 비교하여 팀의 표준을 정하고자 합니다.
📝 안건 1: Application Level에서 제어
설명: 데이터베이스는 Enum 값을 일반적인 숫자나 문자열로 저장하며, Enum 값의 유효성 검증 및 비즈니스 로직은 애플리케이션 코드에서 담당합니다.
1-1. 숫자로 저장 (
@Enumerated(EnumType.ORDINAL))1-2. 문자로 저장 (
@Enumerated(EnumType.STRING))📝 안건 2: DB Level에서 제어
설명: 데이터베이스 자체가 Enum 값의 유효성을 검증하고 관리합니다.
2-1. 숫자로 저장 (별도의 테이블(ID)로 관리)
2-2. 문자로 저장 (Postgres 전용 Enum 타입 사용)
📝 안건 3: 기타 유연한 제어 방식
3-1.
AttributeConverter를 활용한 커스텀 매핑🗣️ 중점 논의사항
각 방식은 데이터 무결성, 가독성, 성능, 그리고 유지보수성 측면에서 명확한 장단점을 가집니다. 특히 @Enumerated(EnumType.ORDINAL) 방식은 그 취약성 때문에 일반적으로 권장되지 않습니다. 우리 프로젝트의 특성과 중요도를 고려하여 최적의 방안을 선택해 주시기 바랍니다.
5 votes ·
Beta Was this translation helpful? Give feedback.
All reactions