티스토리 뷰

728x90
반응형
  • 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속상태로 만들고 싶을 때
  • 예) 부모 엔티티를 저장할 때 자식엔티티도 함께 저장
//부모 :  parent.class, 자식 : child.class 있을 경우

@oneToMany(mappedBy="parent" , cascade=CascadeType.PERSIST)

예시 Parent.class, Child.class 사용하여 설명
@Entity
public class Parent {

	@Id
	@GeneratedValue
	private Long id;
	
	private String name;
	
	@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL) //cascade 선언
	List<Child> childList = new ArrayList<Child>();

...
}

@Entity
public class Child {

	@Id
	@GeneratedValue
	private Long id;
	
	private String name;
	
	@ManyToOne
	@JoinColumn(name="parent_id")
	private Parent parent;
...


//Main

			Parent parent = new Parent();
			parent.setName("test1");
			
			Child child1 = new Child();
			child1.setName("child1");
			Child child2 = new Child();
			child2.setName("child2");
			parent.addChildList(child1);
			parent.addChildList(child2);
			
			entityManager.persist(parent);

//결과 
Hibernate: 
    /* insert hellojpa.Parent
        */ insert 
        into
            Parent
            (name, id) 
        values
            (?, ?)
Hibernate: 
    /* insert hellojpa.Child
        */ insert 
        into
            Child
            (name, parent_id, id) 
        values
            (?, ?, ?)
Hibernate: 
    /* insert hellojpa.Child
        */ insert 
        into
            Child
            (name, parent_id, id) 
        values
            (?, ?, ?)
영속성 전이: CASCADE 주의 사항
  • 영속성 전이는 연관관계를 매핑하는 것과 아무 관련 없음
  • 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화하는 편리함만 제공
CASCADE 타입에 따른 전파 범위
TYPE 설명
ALL 아래에 기술된 모든 동장들을 자식 엔티티에게 전파한다
PERSIST JPA의 Persist 동작 (save, persist )을 부모 엔티티에서 자식 엔티티에게 전파된다
MERGE 부모 엔티티가 업데이트 될때 자식 엔티티들도 업데이트 된다
REMOVE 자식 엔티티들을 부모 엔티티 삭제시 동시에 삭제한다
REFRESH 데이터베이스로부터 데이터르 다시 읽어 들이는 refresh 동작을 부모에서 자식 엔티티로 전파
DETACH Detach 를 부모에서 자식 엔티티로 전파한다
728x90
반응형

'프로그램 언어 > Spring JPA' 카테고리의 다른 글

기본값 타입 (임베디드 타입)  (0) 2023.05.01
기본값 타입 (1)  (0) 2023.04.30
지연 로딩, 즉시로딩  (0) 2023.04.28
PROXY(프록시)  (0) 2023.04.28
@MappedSuperclass(공통 속성 매핑)  (0) 2023.04.27
250x250
반응형
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함