inflearn logo
강의

講義

知識共有

キム・ヨンハンの実践データベース - 設計編2、実務で必ず遭遇する9つの設計パターン

JSON使用ガイドライン

Json 컬럼의 객체 맵핑

66

shout

投稿した質問数 75

0

영한님, 안녕하세요.

또 좋은 강의로 다시 만나뵙게 되었네요.

Spring, Java 로 강의를 듣다가 순수 DB 만 설명을 듣다보니 다소 적응이 되지 않는 감이 있는데요 ㅎ

카테고리의 비정형 속성을 관리하기 위해 Json 설계하는 부분을 설명해주셨는데 이런 경우, Java 에서는 보통 어떤 식으로 객체와 맵핑을 하는지요? 각 카테고리별로 도메인 객체를 분리해서 각각 연동을 하는 식인지, 아니면 단순히 Map 으로 활용하는지 궁금합니다.

저장할 때도 객체를 그대로 저장하면 되기 때문에 편리하다고 하셨는데 각 카테고리별로 별도 객체가 있고 이를 개별 저장하는 형태를 말씀하시는 것인지 질문드립니다.

sql mysql dbms/rdbms 소프트웨어-설계 SQLD 지금-베스트

回答 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 아리마님.

JSON 데이터를 데이터베이스에 저장할 때와 이를 Java 객체로 매핑하는 방법에 대한 질문을 주셨네요.

  1. JSON과 Java 객체 매핑: Java에서 JSON 데이터를 객체와 매핑할 때 일반적으로 두 가지 방법을 사용합니다.

    • 객체로 매핑: JSON에 맞춘 Java 클래스를 생성한 후, 이를 JSON 파서 라이브러리(예: Jackson, Gson 등)를 사용하여 매핑합니다. 이렇게 하면 각 카테고리별로 도메인 객체가 존재하고, JSON 데이터가 직접적으로 매핑됩니다.
    • Map으로 활용: JSON을 Map 구조로 저장하는 방법입니다. 유연하게 비정형 데이터를 다룰 수 있지만, 타입 안전성이 보장되지 않습니다.
  2. JSON 저장 후 매핑: JSON 데이터를 직접 데이터베이스에 저장할 수 있으며, Java에서는 이를 다시 객체로 매핑하여 사용할 수 있습니다. 이는 다형성을 중요시하는 경우에 유용하며, 각 카테고리별로 도메인 객체가 존재할 필요는 없습니다. 하지만, 상황에 따라 도메인 객체로 나눠야 할 때도 있으니 유연하게 접근하는 것이 중요합니다.

  3. 실무에서의 활용: 비정형 데이터의 경우 JSON 형태로 저장한 뒤, 필요시 Java Map으로 매핑하여 사용하는 경우도 많습니다. 이는 복잡한 도메인 모델보다는 유연성을 중시하는 접근 방식입니다.

관련하여 더 깊이 있는 설계 패턴이나 매핑 방법에 대한 내용은 영한님의 다른 강의를 참고하시면 도움이 될 것입니다. 특히 김영한의 실전 데이터베이스 - 설계 2편에서 비정형 데이터의 설계 방법에 대해 자세히 다루고 있을 가능성이 큽니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

다음 강의는 언제쯤 나올까요?

0

46

2

실제 FK제약조건을 설정하지 않는이유

0

58

2

히스토리 관련 질문

0

60

2

통계 데이터 수정 질문

1

65

2

공통 코드에서 Redis Pub/Sub은 최근 실무에서 쓰이진 않나요?

0

137

2

DELETE -> SELECT 질문 드립니다.

0

51

1

상속 관계 모델링의 적용 기준 질문

0

77

1

TTL 캐싱에 대한 질문

0

84

1

공통 코드 사용시 컬럼 타입 설정

0

87

1

history_creted_at과 valid_from

1

68

2

함수 기반 인덱스 (Function-Based Index)

0

73

1

추후 강의 질문있습니다

0

130

2

실무 통계 질문(고민) 드립니다..!

0

94

2

[Deprecated] 오타 제보

0

89

1

오타 제보

0

76

2

category_path 테이블에서 idx_descendant 인덱스를 생성하는 이유가 궁금합니다

0

97

2

물리적으로 외래 키 제약 조건을 설정하지 않을 때

0

101

1

`전체 행 스냅샷 이력 테이블`의 대상 테이블 칼럼 변경

1

89

1

common_code_detail의 code 변경 가능성

1

113

1

[해결책 - 코드값 분리] 중 orders(order_status) - common_code(code) 타입 불일치 제보

0

91

1

이미 문자열 타입인 컬럼을 캐스팅하는 이유

0

108

2

계층 구조 모델링 기타 방법들

0

109

1

섹션 9의 퀴즈가 영어로 출력되요.

0

108

2

섹션 6 SOFT DELETE) UNIQUE 제약 조건 + 가상 컬럼

0

83

1