알림 정보(AlarmArgs)를 별도 클래스로 분리함.
JPA에서 AlarmArgs를 매핑할 때 발생하던 오류(Basic attribute type should not be 'AlarmArgs') 해결
@Convert + AlarmArgsConverter 적용함. (향후 구조 확장을 고려해 JSON 방식 채택 (확장성과 유연성 확보를 위함임.))AlarmEntity에 @Column(columnDefinition = "json") 명시하여 DB에서 JSON 타입으로 인식되도록 설정)@Embeddable + @Embedded
@Convert + 커스텀 AttributeConverter
JSON_EXTRACT 등의 함수를 사용하는게 필요하다. → 내 프로젝트에서는 알림 정보 구조가 알림 종류에 따라 계속 달라질 수 있어서 JSON 저장 방식이 더 적합하다고 판단했다.
@Convert어노테이션이 어노테이션은 단순히
@Column(columnDefinition = "json")만으로는 해결되지 않는 JPA 매핑 에러를 방지하는 필수 키워드 이다!
→ JSON 문자열로 직접 변환/역변환하는 로직을 명확히 지정해줘야 JPA가 오류 없이 작동하기 떄문.
코드를 작성할 때, 설계에서의 관점을 좀 더 비중있게 다뤄야 하는구나.
JPA와 DB 구조 설계에 있어 "확장성과 유지보수"를 고려하는것에 대한 중요성을 잘 인식해야겠다.