'영속성'에 해당되는 글 1건

  1. 2010.06.04 참조에 의한 영속성 전이
영속성 전이 : 부모-자식 관계를 갖는 연관에서 부모에 속하는 객체를 저장/삭제할 때 연관되어 있는 자식 객체도 하께 저장하거나 삭제에까지 영향을 미치는 것 (transitive persistence)
하이버네이트는 기본적으로 영속성 전이를 처리하지 않는다. 주요 키값을 공유하는 1-1관계에서 <one-to-one> 속성을 다음과 같이 명시함
<class name="Article" table="ARTICLE">
  <id name="id" column="ID">
    <generator class="identity" />
  </id>

  <one-to-one name="detail" class="ArticleDetail" />
</calss>

<class name="ArticleDetail" table="ARTICLE_DETAIL">
  <id name="id" column="ARTICLE_ID">
    <generator class="foreign">
      <param name="property">article</param>
    </generator>
  </id>

  <one-to-one name="article" class="Article" constrained="true" />
</class>
Article 클래스의 매핑에서 <one-to-one> 태그에 cascade 속성을 명시하지 않음.
이 상태에서 Article 객체와 ArticleDetail객체를 연관시킨 후 Session.save()를 실행하게 되면 Article객체만 저장되고 ArticleDetail객체는 저장되지 않는다.
ArticleDetail detail = new ArticleDetail();
article.setDetail(detail);
detail.setArticle(detail);
session.save(article); //article 객체만 저장됨

<one-to-one name="detail" class="ArticleDetail" cascade="save-update, delete" />
casecade 속성을 추가해 Article 객체의 영속성이 ArticleDetail 객체에까지 전이된다.
cascade 값
 속성 값 Session 메소드
설 명
 save-update save(), update(), saveOrUpdate()
 객체가 저장되거나 수정될때 사용
 delete delete()  객체가 삭제될때
 create persist()  객체를 저장할때
 merge merge()  객체의 값을 영속 객체에 복사할때
 lock lock()  객체를 잠금모드로 읽어 올때 
 refresh refresh()  데이타베이스에서 값을 다시 읽어올때
 evict evict()  세션 캐시에서인스턴스를 제거할때 
 replicate replicate()  준영속 객체의 갑슬 데이타베이스에 복사할때 
 delete-orphan 없음  컬렉션 타입에 적용, 컬렉션에서 객체가 삭제될때 적용
 all 없음  delete-orphan을 제외한 모든 속성 적용

저작자 표시
신고
Posted by 영겁회귀

티스토리 툴바