Hibernate 맵 해석 의 관련 맵 상세 설명

Hibernate 의 관련 맵
연관 관계
평소 개발 에서 유형 과 유형 간 의 가장 보편적 인 관 계 는 바로 관련 관계 이 고 관련 은 방향 이 있다.
부서(Dept)와 직원(Employee)을 예 로 들 면 한 부서 아래 에 여러 명의 직원 이 있 고 한 명의 직원 은 한 부서 에 만 속 할 수 있다.
Employee 에서 Dept 까지 의 연관 성 은 일대일 연관 성 이다.이것 은 모든 Employee 대상 이 하나의 Dept 대상 만 인용 한 다 는 것 을 설명 하기 때문에 Employee 클래스 에서 하나의 Dept 형식의 속성 을 정의 하여 연 결 된 Dept 대상 을 인용 해 야 한다.
Dept 에서 Employee 까지 의 관 계 는 한 쌍 의 다 중 관계 입 니 다.이 는 모든 Dept 대상 이 하나의 Employee 대상 을 참조 하기 때문에 Employee 클래스 에서 하나의 집합 형식의 속성 을 정의 하여 모든 관련 Employee 대상 을 참조 해 야 한 다 는 것 을 의미한다.
Employee 에서 Dept 까지 의 연결 만 있 거나 Dept 에서 Employee 까지 의 연결 만 있다 면 단 방향 연결 이 라 고 합 니 다.
두 가지 연관 성 을 동시에 포함한다 면,쌍방 향 연관 성 이다.
단 방향 연결

양 방향 연결

일대일 연결 설정
4.567917.직원 과 부서 의 경우 직원 을 부서 로 배치 하 는 단 방향 은 1 대 1 로 관련 되 어 있다
  • Employee 클래스 에서 Dept 형식의 속성 dept 를 정의 합 니 다.
  • 설정 파일 에'many-to-one'을 사용 하여 설정 합 니 다.
    
    private Integer id;
    private String name;
    private Integer age;
    private Integer sex;
    private Dept dept; //       
    매 핑 파일
    
    <many-to-one name="dept" column="dept" class="com.ytzl.demo.entity.Dept" cascade="save-update"></many-to-one>
    name:속성 명 여기 가 Employee 의 dept 입 니 다
  • column:외부 키 필드,여기 가 바로 Employee 표 의 dept 필드 입 니 다
  • class:dept 속성 에 대응 하 는 유형 입 니 다.여 기 는 Dept 류 입 니 다4.567917.캐 스 케 이 드:직렬 작업 여 기 는 저장 과 수정 입 니 다.
    한 쌍 이상 의 관련 관 계 를 설정 합 니 다.
    직원 과 부서 의 경우 부서 에서 직원 까지 의 관 계 는 한 쌍 이 넘 는 관계 이다.
  • Dept 류 에 집합 속성 을 추가 하여 인 용 된 직원 대상 을 저장 합 니 다
  • 맵 파일 에 set 설정
    클래스 속성 수정
    
    private Integer id;
    private String name;
    private Set<Employee> employees = new HashSet<>(); //        
    맵 파일 수정
    
    <!--          -->
    <set name="employees"> <!-- name                -->
     <key column="dept"></key> <!--      employee        -->
     <one-to-many class="com.ytzl.demo.entity.Employee"/> <!--              -->
    </set>
    name:속성 명,집합 속성의 이름
  • key 요소:column 속성 설정 과 관련 된 지구 화 류 에 대응 하 는 표 의 외 키 입 니 다.여 기 는 employee 표 의 dept 외 키 필드 이름 입 니 다
  • 4
  • one-to-many:class 속성 지정 과 관련 된 지구 화 류 는 직원 류 에 대응 합 니 다
  • 캐 스 케 이 드 속성 관련 작업
    현재 대상 과 연 결 된 다른 대상 을 어떻게 조작 할 지 지정 하 는 데 사용 합 니 다.
    선택 값:
  • none:기본 값;다른 대상 과 는 관련 이 없다.
  • save-update 는 세 션 을 통 해save(),update()saveOrUpdate()방법 을 실행 할 때 관련 대상 을 업데이트 하거나 저장 합 니 다
  • 4.567917.delete:4.567914 를 통 해 현재 대상 을 삭제 할 때 관련 대상 을 등급 별로 삭제 합 니 다all:delete,save-update 를 포함 하 는 행위
    inverse 속성 반전 속성
    hibenate 에서'inverse'속성 은 관련 관계 의 방향 을 지정 합 니 다.
    관련 관계 에서'inverse='false'는 주동 적 인 측 이 고 주동 적 인 측 이 관련 관 계 를 유지 하 는 것 을 책임 집 니 다.
    order-by 속성 은 집합 내 요소 의 정렬 순 서 를 지정 합 니 다.
    여 기 는 직원 과 부 서 를 예 로 들 면 부서 내의 직원 들 이 나이 가 거꾸로 되 는 순서 로 순 서 를 매기 면 order-by 속성 을 설정 할 수 있 습 니 다.
    
    order-by="age desc"
    다 중 연관 성
    직원 과 프로젝트 의 경우 한 직원 이 여러 프로젝트 에 참여 할 수 있 고 각 프로젝트 에 여러 직원 이 참여 할 수 있다.
    프로젝트 클래스 를 설정 하고 클래스 에 집합 속성 을 추가 하여 직원 의 인용 을 저장 합 니 다
  • Employee 류 를 설정 하고 클래스 에 집합 잠 을 추가 하여 항목 참조 저장 에 사용 합 니 다
  • 종종 여러 쌍 의 다 중 맵 이 세 번 째 표 와 관련된다.
    프로젝트 클래스
    
    private Integer id;
    private String name;
    private Set<Employee> employees = new HashSet<>();
    프로젝트 맵 클래스 설정
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
     
     <hibernate-mapping>
     <class name= "com.ytzl.demo.entity.Project" table ="project" dynamic-update="true">
     <id name="id" column="p_id" type="java.lang.Integer">
     <generator class="increment"></generator>
     </id>
     <property name="name" column="p_name" type="java.lang.String"></property>
     <set name="employees" table="emp_pro_relate" cascade="save-update">
     <key column="pro_id"></key>
     <many-to-many class="com.ytzl.demo.entity.Employee" column="emp_id"></many-to-many>
     </set>
     </class>
     </hibernate-mapping>
    set 요소 의 table 속성 은 세 번 째 관련 표 에 대응 합 니 다
  • key 요소 의 column 속성 은 procject 표 가 세 번 째 표 의 외 키 에 대응 합 니 다
  • many-to-many 요소 column 은 관련 대상 이 세 번 째 표 의 외부 키 에 대응 합 니 다.
  • Employee 클래스
    
    private Integer id;
    private String name;
    private Integer age;
    private Integer sex;
    private Dept dept; //       
    private Set<Project> projects = new HashSet<>(); //      
    Employee 맵 파일
    
    <set name="projects" table="emp_pro_relate" inverse="true">
     <key column="emp_id"></key>
     <many-to-many class="com.ytzl.demo.entity.Project" column="pro_id"></many-to-many>
    </set>
    로드 지연
    hibenate 가 데이터베이스 에서 Dept 대상 을 불 러 올 때 관련 된 모든 Employee 대상 을 동시에 불 러 올 때 우 리 는 Dept 대상 만 필요 하 다 면 관련 대상 들 은 많은 메모리 공간 을 헛되이 낭비 할 것 입 니 다.이 때 로드 지연 이 있 습 니 다.실제 Employee 를 사용 해 야 할 때 불 러 옵 니 다.hibenate 는 lazy 속성 을 사용 하여 로드 지연 조회 정책 을 지정 합 니 다.
    hibenate 는 대상-관계 맵 파일 에 로드 정책 을 설정 할 수 있 습 니 다.
    등급
    설명 하 다.
    클래스 등급
    요소 중 lazy 속성 은 true(로드 지연)와 false(즉시 로드)로 선택 할 수 있 습 니 다.기본 값 은 true 입 니 다.
    한 쌍 의 다 중 관련 단계
    요소 중 lazy 속성의 선택 값 은 true(로드 지연),extra(로드 지연 증가),false(즉시 로드)기본 값 은 true 입 니 다.
    다 대 일 관련 단계
    요소 에서 lazy 속성의 선택 값 은 proxy(로드 지연),no-proxy(프 록 시 지연 로드 없 음),false(즉시 로드)입 니 다.기본 값 은 proxy 입 니 다.
    총결산
    이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기