E08 enum class 활용 : Parameter, Domain 클래스 내부 변수(종류, 분류, 코드 등)에 사용하기
Mybatis TypeHandler 및 코드규칙
자바코드와 분리 / DB 오류방지를 위해 TypeHandler를 통하여 사용해도 됩니다.
현재 영상은 TypeHandler 관리하지 않고 JAVA ENUM <-> DB 필드와 1:1 연결되는 방식입니다.
VARCHAR 가변을 사용하고 싶지 않다면, CHAR(5) 고정자리수 형태로 해서 BT001, BT002, BT003 코드형태로 하셔도됩니다.
현재시점
대부분은 테이블에 공통코드 테이블을 만들고 코드, 코드명 형태로 관리한다.
관리자에서 CRUD 형태 또는 개발자가 필요코드만 INSERT 하여 관리하는 방식 등 다양하다.
장점
- 불필요한 테이블 및 코드관리가 필요없어진다.
- 리스트, 상세 조회시 코드에 대한 코드명을 TABLE 로 JOIN하거나 FUNCTION을 가져오는 불필요한 쿼리가 없어진다.
- Front(JSP, Vue.js, React, Native APP), API등 에서 코드명 하드코딩이 없어진다.
- 위 3개는 즉 결과 나오는 속도가 더 빨라진다. (자동 성능 튜닝...^^)
- 코드, 코드명 추가/수정/삭제 시 운영서버에 배포만한다면 DB를 직접 건드리지않고 자동으로 적용된다.
- int, String으로 선언한다면 코드에 대해 공백, 자리수, 유효한 값인지 체크 로직이 들어가야한다. enum은 안해도 된다.
(Enum에 해당하지 않는 값이 들어온다면 Spring 에서 에러가 발생)
단점
이부분 때문에 오류가 생겼는데 많이 헤맸다.!
1. 사이트 관리자 및 고객사에서 오픈 이후 코드를 추가, 수정, 삭제가 불가능 하다.
2. 코드 추가/수정/삭제는 개발자가 직접 코드를 수정하고 운영서버에 배포하고 재기동을 해야 적용된다.
3. DBMS TOOL에서 직접 INSERT, UPDATE 등을 통하여 잘못된 ENUM 정의되지 않은 코드가 있는경우 오류가 발생한다.
참조
https://github.com/stylehosting/example-spring