2012-02-12 2 views
3

현재 엔티티 간의 여러 다 대다 관계를 유지하면서 Java Swing 응용 프로그램에서 최대 절전 모드 4를 사용하면서 문제를 해결하려고합니다.다 대다 관계가있는 최대 절전 모드 엔티티 저장/업데이트

예를 들어, 프로젝트 엔티티는 사람과 관계가 있습니다. 사람프로젝트에는 다 대다 관계가 있습니다. A 프로젝트은 많은 범주 일 수 있으므로 다 대 다 관계도 있습니다.

Person *-----* Project *-----* Category 

나는 내가 사람하는 프로젝트카테고리에 대한 모든 정보를 편집 할 수있는 스윙 폼이 사용자 "는 안타 때 그것은 사람을 저장하기 위해 올 때 저장 "버튼, 저장/업데이트 할 수있는 가능한 해결책은 무엇입니까 사람? 사람 내부프로젝트수집하고 수집의 Categoy 변경되었을 수 있습니다 프로젝트내부를도 있기 때문에

void savePerson(Person p){ 
    Session sess = factory.openSession(); 
    Transaction tx = null; 
    try { 
     tx = sess.beginTransaction(); 

     // steps to be done 

     tx.commit(); 
    } 
    catch (RuntimeException e) { 
     if (tx != null) tx.rollback(); 
    } 
    finally { 
     sess.close(); 
    } 
} 

, 내가해야합니까 재귀 유형의 저장 (먼저 콜렉션에 포함 된 모든 하위 엔티티를 저장/업데이트 한 다음 Person 엔티티를 저장/업데이트) 또는 나만 저장해야합니까? Person 엔티티에게 접근하고 Hibernate는 Save/Update 메카니즘을 Person을 루트로 갖는 엔티티 트리 전체에 적용 하는가? 모범 사례?

답변

2

CascadeType을 살펴보십시오. 관계 주석에서 CascadeType을 사용하여 저장/업데이트 작업의 동작을 직접 설정할 수 있습니다.

@OneToMany(cascade = CascadeType.ALL) 
+1

위의 설명에 감사드립니다.이 주석은 위에서 설명한 동작을 얻는 열쇠입니다. 하지만 아마도 가장 바보 같은 이름을 붙일 수있는 또 다른 주석이 필요하다는 것을 알기까지 수 주일이 걸렸습니다. 속성 "inverse = false"는 관계의 책임있는 측면을 단순히 나타내는 것 또한 필요합니다. – xSNRG

관련 문제