-
사이드 프로젝트 - Enum converter글또 2022. 1. 23. 00:04
사이드 프로젝트
오류 발생
아앗.. 현재 DB에 있는 한 칼럼은 역정규화를 통해 ", "를 찍어서 보관 중인 것이 있다.
ex) A, B, C
request로 들어올 때는 string list로 들어오는데 이는 코드 상에서 enum으로 관리한다.
즉 DB I/O 작업이 있을 때만 변경을 해주면 된다는 것.
jpa에는 converter를 아주 쉽게 사용할 수 있다.
우리가 구현해야 하는 로직은
List <Enum> -> string, string
string,string -> List <Enum>
변환 로직이다. 근데 하나의 enum에만 사용되는 것이 아니니 genric 하게 코드를 구현해야 한다.
변경 전
enum List로 코드상에서 관리되고 있다.
entity 기존의 converter String으로 반환을 했었는데
아뿔싸
우리의 코드에서는 enum으로 관리가 되고 있다.
무려 하나의 enum type이 아닌 2개 enum들이 list로 관리되고 있다.
그래도 핵심 기능은 같기에 위쪽으로 모아버리고 제네릭으로 구현하면 되지 않을까라는 생각이 처음에 들었다.
근데 @Converter는. class로 실제 클래스를 명시하고 있기에 이는 생성 시 특정 값을 넣어줄 수 없었다.
그래서 구글링을 하던 중 무려 같은 케이스를 발견했고 적용했다. 다 똑같은 고민을 한 적이 있어..
변경 후
변경 후 이제 enum genric으로 받고 사용한다.
근데 enum을 찾아서 적용해야 하는데 오버 라이딩된 녀석의 시그니쳐는 고칠 수 없으니 생성자로 받아서 사용한다.
이번에 valueOf에 class type을 넣어 사용하는 것을 처음 배웠다. 매번 찾을 때만 사용했었는데..
이제 각각의 구현체들을 만들어 주면 끝이다.
Legacy DB의 JPA Entity Mapping (Enum Converter 편) | 우아한형제들 기술블로그
{{item.name}} 안녕하세요. 저는 우아한형제들 비즈상품개발팀의 이은경입니다. Legacy DB의 JPA Entity Mapping (복합키 매핑 편)에 이어 저는 DB의 코드값과 Java Enum을 연결해주는 과정에서 유용하게 사용
techblog.woowahan.com
Implementing a Generic Enum JPA Attribute Converter in Java
Using ORMs like JPA makes it easy to map your entity fields to the database. You can easily map a String, an Enum or a List just using annotations to specify how you want your data to be stored. Sometimes, however, you want your data to be saved in a very
jorgepadilla.es
'글또' 카테고리의 다른 글
검색 단어에 따라 에러가 발생한다고? (0) 2022.03.05 도커가 계속 죽어요.. OOM killer (0) 2022.01.23 Atdd [인수 테스트 -1 ]피드백 (0) 2022.01.22 2021 회고 (0) 2021.12.31 2021.11.25 기록장 (0) 2021.11.24