Programming/JPA & Spring Data JPA 기초26 10. 값 콜렉션 Map 매핑 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * 단순 값을 Map으로 보관하는 모델 doc_prop 테이블은 map에 해당하는 테이블이다. name이 key, value가 value로 저장된다. Document의 props에 매핑된다. * 단순 값 Map 매핑 Document 클래스에서 확인할 수 있다. 기본적인 방법은 Set, List와 동일한다. @MapKeyColumn 애너테이션을 사용한다는 차이가 있다. 해당 애너테이션은 key값으로 쓰일 칼럼을 지정한다. * 저장 여러 값을 보유한 Map을 이용해 props 맵을 만들고 해당 props를 인자로 넘겨준 Document 객체를 생성하고 persist()를 해보자. 기본적으로 doc 테이블.. 2023. 3. 21. 09. 값 콜렉션 List 매핑 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * 단순 값을 List로 보관하는 모델 질문(Question)의 보기를 question_choice 테이블에 담는다. 보기는 순서대로 저장되어야 하기 때문에 List로 표현하여 Question 클래스의 choices와 매핑한다. * 단순 값 List 매핑 Question 클래스에서 확인할 수 있다. Set을 매핑할 때와 다르게 @OrderColumn 애노테이션을 사용한다. 해당 애노테이션을 통해 인덱스 값을 저장할 칼럼을 지정한다. 예시에서는 idx 칼럼을 사용한다. 이외에는 Set을 매핑할 때와 동일한다. * 저장 Question에 id, text, 보기의 리스트를 인자로 넣어 객체를 생성하고 이를.. 2023. 3. 20. 08. 값 콜렉션 Set 매핑 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * 단순 값을 Set으로 보관하는 모델 role_perm은 role이 가지고 있는 권한을 보관하는 테이블이다. 이런 테이블을 Collection테이블이라고 표현한다. 이런 테이블을 자바 내에 표현하면 Role 객체 내의 Set으로 담게 표현할 수 있다. * 단순 값 Set 매핑 Role 클래스에서 확인할 수 있다. @EllementCollection 과 @CollectionTable 애노테이션을 사용한다. @CollectionTable의 name 은 role_perm을 지정하고 joinColumns는 role의 id를 참조하는 칼럼, 즉 join할 때 사용할 칼럼 지정한다. 실제 값을 담을 colum.. 2023. 3. 2. 07. @Embeddable2 - 다른 테이블에 매핑하기 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * 다른 테이블에 값을 저장할 때 DB 설계 중에는 여러 테이블에 관련된 값을 저장할 때가 있다. writer와 관련된 데이터를 writer_intro와 writer_address에 나눠 저장할 수 있다. 이 세개의 테이블을 자바 코드로 모델링 하면 오른쪽과 같이 세 개의 클래스를 이용해 구현할 수 있다. Intro와 Address는 데이터를 지닌 값의 형태로 존재할 수 있다. @Embeddable로 엔티티인 Writer에 Intro와 Address를 매핑할 수 있다. * 방법1 - @SecondaryTable + 테이블명 Intro클래스는 @Embeddable을 사용하지만 @Column에 table.. 2023. 2. 28. 06. @Embeddable 해당 강의는 코드 위주로 진행됩니다. 실질적인 객체 처리를 담당하는 코드는 링크에서 확인하시길 바랍니다. * 테이블과 매핑 예 지금까지는 위의 그림처럼 테이블의 칼럼과 클래스의 속성을 1 vs 1로 매핑했다. * 실제 모델 실제로는 address1, address2, zipcode를 모아 Address로 나눠 표현한다. 이러한 방법이 표현력 역시 좋다. * @Embeddable 엔티티가 아닌 타입이 한 개 이상의 필드와 매핑할 때 사용할 수 있는 것이 @Embeddable 애노테이션이다. 대표적으로 Address, Money 등이 있다. Address와 같은 값 타입 클래스에는 @Embeddable을 붙이고, Hotel과 같이 Embeddable한 타입을 사용할 Entity 클래스에서는 @Embedded.. 2023. 2. 27. 이전 1 2 3 4 5 6 다음 반응형