내용으로 건너뛰기
권남
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
추적:
java:jpa:map
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
====== JPA Map ====== * Entity를 Map으로 가질 수도 있고, 일반 값 객체를 Map으로 가질 수도 있다. ===== Entity Map일 경우, update 발생 ===== * Entity Map이고, Map의 Key가 자식 Entity의 값의 일부일 경우, 부모측에서 자식객체를 지정한 상태에서 ''persist''를 하면 객체 저장 이후 자식측 데이터에서 ''parent_id'', ''map_key''를 update하는 현상이 발생한다. * 예) Parent -> Child 맵<code java> public class Parent { // .... @OneToMany(cascade = {CascadeType.ALL}) @JoinColumn(name = "parent_id", nullable = false) @MapKeyColumn(name = "map_key") private Map<String, Child> children; // children 테이블에 parent_id, map_key 컬럼 존재 } // 이 상황에서 Parent 객체를 children 값까지 다 채워서 persist 하면 insert 후에 update 동반 발생 // 이미 insert 상황에서 children 테이블의 parent_id, map_key의 채워진 상황. update children set parent_id=?, map_key=? where child_id=? </code> * Parent의 ''@JoinColumn'', ''@MapKeyColumn''을 ''updatable=false''로 지정하면 업데이트 안 일어남<code java> @OneToMany(cascade = {CascadeType.ALL}) @JoinColumn(name = "parent_id", nullable = false, updatable=false) @MapKeyColumn(name = "map_key", updatable=false) private Map<String, Child> children; // 이후 update 안 일어남. </code> * **근본적으로 Map의 Key가 Entity에 직접 들어가는 상황이라면 Entity Map 보다는 Embeddable Map이 맞는 것 같다**. ===== 참조 ===== * [[https://baeldung.com/hibernate-persisting-maps|Persisting Maps with Hibernate | Baeldung]]
java/jpa/map.txt
· 마지막으로 수정됨: 2019/04/22 14:37 저자
kwon37xi
문서 도구
문서 보기
이전 판
역링크
맨 위로