2017-12-22 10 views
0

나는 최대 절전 모드를 배우고 있으며 그것이 ORM 도구임을 알게되었습니다. Hibernate를 사용하여 Entity의 개별 항목을 저장해야합니까?

@Entity 
@Table(name="USER_DETAILS") 
public class UserInfo { 

    @ElementCollection 
    Set<Address> addressList = new HashSet<Address>(); 

    // Some other code... 
} 

주요 응용 프로그램 :

과 같이 코드에서 볼 수
public class MainApp { 

    public static void main(String s[]) { 

     SessionFactory sf = null; 
     sf = new Configuration().configure().buildSessionFactory(); // This will read the hibernate.cfg.xml file 

      // We can save using session.save(object) 
    } 
} 

, 우리는 addressList (컬렉션)를 가지고있는 UserInfo 기업에 대한

이 시나리오를 고려하십시오.

내 질문은 :

우리는 embedded object 자동으로 개체의 일부로 저장 될 것이다, 엔티티를 저장하거나 우리가 특별히뿐만 아니라 collection object을 저장해야하는 경우?

+1

공장 저장 방법이 UserInfo를 소비한다고 가정 할 때 UserInfo 개체에 설정된 경우 컬렉션 개체를 특별히 저장할 필요가 없습니다. – CrazySabbath

+1

하위 엔티티를 지속시키기 위해'Cascade' 전략을 지정해야합니다. – Saravana

+0

@Saravana : 하위 엔티티가 아니며 콜렉션입니다. 우리는 이것을 어디에서 지정해야합니까? 정교하게 제발 주시겠습니까? – CuriousMind

답변

0
  1. cascade = "none"(기본값)은 Hibernate에게 연관을 무시하도록 지시한다.
  2. 폭포는 = "저장 업데이트의" 트랜잭션이 커밋 및 개체가 전달 될 때 (저장) 또는 업데이트 (때 협회를 탐색)와 새롭게 인스턴스 과도 인스턴스를 저장하고 분리 된 인스턴스에 대한 변경 사항을 유지하기 위해 Hibernate에게 알려준다 .
  3. cascade = "delete"는 객체가 delete()에 전달 될 때 Hibernate가 연관을 탐색하고 영구 인스턴스를 삭제하도록 지시합니다.
  4. cascade = "모두"는 축약 및 잠금을위한 호출뿐만 아니라 save-update 및 delete를 계단식으로 연결하는 것을 의미합니다.
  5. cascade = "all-delete-orphan"은 cascade = "all"과 동일하지만, 덧붙여 Hibernate는 연결에서 제거 된 (역 참조)에서 제거 된 모든 영구적 인 실체 인스턴스를 삭제합니다 (예 : 수집).
  6. cascade = "delete-orphan"Hibernate는 연관에서 제거 (참조 해제) 된 영속 엔티티 을 삭제할 것이다 (컬렉션에서 예제).
+0

과 같이 UserInfo를 저장하면 주소 정보도 저장됩니다. – aruntheimperfect