사용자가 온보딩 시에 입력한 주소정보와 재난유형정보를 저장하기 위해 중간테이블을 이용한 다대다 매핑을 하였습니다.
재난유형 entity들은 모든 재난유형 종류에 맞게 db에 미리 저장해놨습니다.
주소 정보를 문자열로 받아 직접 문자열에서 파싱하여 형식에 맞춰 시/도, 시/군/구, 읍/면/동 3부분으로 나눠지게 저장하도록 구현하였습니다. 최대한 예외를 생각하여 파싱 로직을 작성하였지만 아직 다양한 주소의 검증을 해보진 못한것 같아 추후 예외 케이스가 생길수도 있을것 같습니다.
field 어노테이션을 이용해 valid 검증을 하였고, 발생하는 예외도 전역 예외 핸들러에 추가하였습니다. (kotlin에서는 valid어노테이션을 field 어노테이션과 함께 써야하더군요.)
참고 내용
Kotlin으로 Valid 관련 제약사항을 명시할 때 Validation 관련 annotation에 @field:를 prefix로 붙여야 합니다.
Java에서 사용하던 방식대로 @NotNull 이렇게 사용하면 Kotlin에서 Java로 convert했을 때 constructor에
Valid 어노테이션이 붙게 된다고 합니다.
구현한 기능
중요 포인트
사용자가 온보딩 시에 입력한 주소정보와 재난유형정보를 저장하기 위해 중간테이블을 이용한 다대다 매핑을 하였습니다.
재난유형 entity들은 모든 재난유형 종류에 맞게 db에 미리 저장해놨습니다.
주소 정보를 문자열로 받아 직접 문자열에서 파싱하여 형식에 맞춰 시/도, 시/군/구, 읍/면/동 3부분으로 나눠지게 저장하도록 구현하였습니다. 최대한 예외를 생각하여 파싱 로직을 작성하였지만 아직 다양한 주소의 검증을 해보진 못한것 같아 추후 예외 케이스가 생길수도 있을것 같습니다.
field 어노테이션을 이용해 valid 검증을 하였고, 발생하는 예외도 전역 예외 핸들러에 추가하였습니다. (kotlin에서는 valid어노테이션을 field 어노테이션과 함께 써야하더군요.)
참고 내용