자바 동면과 역의 캐스케이드

캐스케이드 작업이 many_to_one 관련된 객체로 케스케이드 될 수있는 경우 1.Cascade 캐스케이드 작업은 다음 코드가 저장 범주 객체를 캐스케이드 할 수 있습니다.

매핑 파일의 책에 설정

<대일 NAME = "카테고리"열 = "CID"캐스케이드 = " 업데이트를 저장 "/>

당신이 책을 저장할 때 범주에 해당하는 책이 저장되어 있지 않은 경우, 그 첫 번째는 저장 한 다음, 책 카테고리를 저장 데이터를 저장하는 작업 캐스케이드을 완료 .

캐스케이드 기본값은 아무도하지 캐스케이드 작동하지 않습니다;

캐스케이드 many_to_one은 삭제하도록 설정하지 않는 한이 외래 키를 기반으로하지 않는 한이 예외를 만들 것이기 ​​때문에 캐스케이드, 삭제할 수 있습니다.

캐스케이드는 모든 모든 모든 작업을 단계적으로 할 수 있음을 나타내는 것이라고 생각합니다.

 

캐스케이드 one_to_many에서 :

<! - 양방향 많은 설정 -> 
        <SET 이름 = "  " 캐스케이드 = "저장-업데이트"> 
            <! - 외래 키 -> 
            <키 열 = "CID"> </ 키> 
            <! - 말의 종류의 복수 설정 -> 
            <일대 클래스 = "책"/> 
        </ SET>

객체 사이의 관계는 다중 데이터가이 책을 저장하는 계단식 것이다 저장되지 않습니다 발견되면 결국, 데이터를 저장할 때, n 개의 업데이트 문을 더 할 것이다, 그러나 한쪽 끝에서 저장 계단식, 효율은 상대적으로 낮다. (즉, 캐스케이드의 최종 용도가 저장되었을 때, n은 업데이트 명령문 비효율적하는 복수 캐스케이드 멀티 그러므로 일단에 권장되지 권장)

 

데이터를 삭제할 때 캐스케이드 = 끝에 다음, 한쪽 끝에서 "삭제"하는 경우, 모든 데이터는 멀티가 삭제 계단식됩니다. ( 주의 )

참고 : 작업에 폭포, 연관된 객체를 설정해야합니다. 연관된 객체가 존재하지 않는 경우, 연쇄 적 효과가 없을 것입니다. 작은 폭포를 사용하는 것이 좋습니다, 당신도 필요가 없습니다.

2. 역 누가 관리 동면 (CRUD)의 외래 키의 단부에 제어 관계 역방향 .

<! - 양방향 많은 설정 -> 
        <SET 이름 = "책"캐스케이드 = "저장-업데이트"  = "true로"> 
            <! - 외래 키 -> 
            <키 열 = "CID" > </ 키> 
            <! - 유형은 다중의 한쪽에 배치 -> 
            <일대 클래스 = "책"/> 
        </ SET>

이 책 (즉, 복수 단)의 단부를 유지하기위한 관계 (외부 키)을 나타낸다 . 즉, 분류 개체를 예약 할 해당 개체의 속성을 설정하는 좋은 책, 외래 키는 (저장) 유지됩니다.

  @Test
     공개  공극 testInit () { 
        세션 세션 = ; 
        텍사스 거래 = 널 (null) ;
        시도 { 
            세션 = HibernateUtil.getSession (); 
            TX = session.beginTransaction (); 
            종류 C1 = 새로운 카테고리 ( "计算机类" ); 
            카테고리 C2 = 새로운 카테고리 ( "文学" ); 
            카테고리 C3 = 새로운 카테고리 ( "历史" ); 
            SimpleDateFormat의 DF= 새로운 SimpleDateFormat의 ( "YYYY-MM-DD" ); 
            책 B1 = 새로운 도서 ( "자바", "일", 30, df.parse ( "1995년 5월 23일" ));
            b1.setCategory (C1) ; 
            책 B2 =  도서 ( "지주", "아파치"40 df.parse ( "2006-09-12" ));
            b2.setCategory (C1); 
            책 B3 =  도서 ( "明朝那些事儿", "当年明月"70 df.parse ( "2008-05-23" )); 
            b3.setCategory (C3); 
            책 B4 = 새로운 도서 ( "水浒传", "老撕", 20, df.parse ( "
            . c1.getBooks () (B1)을 추가; 
            . c1.getBooks () (B2)를 추가; 
            . c2.getBooks () (B4)를 추가; 
            . c3.getBooks () (B3)을 추가; session.save (C1); 
            session.save (C2); 
            session.save (C3); 
            tx.commit (); 
        } 
            
            캐치 (예외 전자) {
             경우 (TX! = null이 ) 
                tx.rollback (); 
        } 마지막 { 
            HibernateUtil.close (); 
        } 
    }

거짓 역변환 = 보수 단부의 관계를 설명 할 수있는 경우 , 즉, 일단이 상기 데이터의 하나 이상의 단부를 첨가하여 말 외래 키 관계를 유지한다.

  @Test
     공개  공극 testInit () { 
        세션 세션 = ; 
        텍사스 거래 = 널 (null) ;
        시도 { 
            세션 = HibernateUtil.getSession (); 
            TX = session.beginTransaction (); 
            종류 C1 = 새로운 카테고리 ( "计算机类" ); 
            카테고리 C2 = 새로운 카테고리 ( "文学" ); 
            카테고리 C3 = 새로운 카테고리 ( "历史" ); 
            SimpleDateFormat의 DF= 새로운 SimpleDateFormat의 ( "YYYY-MM-DD" ); 
            책 B1 = 새로운 도서 ( "자바", "일", 30, df.parse ( "1995년 5월 23일" )); 
            책 B2 =  도서 ( "지주", "아파치"40 df.parse ( "2006-09-12" )); 
            책 B3 =  도서 ( "明朝那些事儿", "当年明月"70 df.parse ( "2008-05-23" )); 
            책 B4 = 새로운 도서 ( "水浒传", "老撕", 20, df.parse ( "1985년 5월 23일" ));
            . c1.getBooks () (B1)을 추가; 
            . c1.getBooks () (B2)를 추가; 
            . c2.getBooks () (B4)를 추가; 
            . c3.getBooks () (B3)을 추가; session.save (C1);
            
            session.save (C2); 
            session.save (C3); 
            tx.commit (); 
            
        } 캐치 (예외 전자) {
             경우 (TX! = null이 ) 
                tx.rollback (); 
        } 마지막 { 
            HibernateUtil.close (); 
        } 
    }

그러나 업데이트 문에 의해 완성된다. 따라서, 일반적인 경우, 역 = TRUE 미만.

결국별로 역, 많은 최종 기본 관계를 유지할 수 있기 때문에 .

참고 : 연관된 객체는, 둘 다 작동하지 않는 경우 캐스케이드 및 역 협회 개체가에 의해 수행된다. 두 설정의 경우, 관계를 관리 폭포, 관리하는 사람을 구별합니다. 연관된 타겟 관리 관계 관리 캐스케이드 모두있을 수있다.

 

추천

출처www.cnblogs.com/Vincent-yuan/p/11210864.html