Hibernate 맵 해석 의 관련 맵 상세 설명
연관 관계
평소 개발 에서 유형 과 유형 간 의 가장 보편적 인 관 계 는 바로 관련 관계 이 고 관련 은 방향 이 있다.
부서(Dept)와 직원(Employee)을 예 로 들 면 한 부서 아래 에 여러 명의 직원 이 있 고 한 명의 직원 은 한 부서 에 만 속 할 수 있다.
Employee 에서 Dept 까지 의 연관 성 은 일대일 연관 성 이다.이것 은 모든 Employee 대상 이 하나의 Dept 대상 만 인용 한 다 는 것 을 설명 하기 때문에 Employee 클래스 에서 하나의 Dept 형식의 속성 을 정의 하여 연 결 된 Dept 대상 을 인용 해 야 한다.
Dept 에서 Employee 까지 의 관 계 는 한 쌍 의 다 중 관계 입 니 다.이 는 모든 Dept 대상 이 하나의 Employee 대상 을 참조 하기 때문에 Employee 클래스 에서 하나의 집합 형식의 속성 을 정의 하여 모든 관련 Employee 대상 을 참조 해 야 한 다 는 것 을 의미한다.
Employee 에서 Dept 까지 의 연결 만 있 거나 Dept 에서 Employee 까지 의 연결 만 있다 면 단 방향 연결 이 라 고 합 니 다.
두 가지 연관 성 을 동시에 포함한다 면,쌍방 향 연관 성 이다.
단 방향 연결
양 방향 연결
일대일 연결 설정
4.567917.직원 과 부서 의 경우 직원 을 부서 로 배치 하 는 단 방향 은 1 대 1 로 관련 되 어 있다
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 입 니 다한 쌍 이상 의 관련 관 계 를 설정 합 니 다.
직원 과 부서 의 경우 부서 에서 직원 까지 의 관 계 는 한 쌍 이 넘 는 관계 이다.
클래스 속성 수정
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:속성 명,집합 속성의 이름현재 대상 과 연 결 된 다른 대상 을 어떻게 조작 할 지 지정 하 는 데 사용 합 니 다.
선택 값:
save()
,update()
및saveOrUpdate()
방법 을 실행 할 때 관련 대상 을 업데이트 하거나 저장 합 니 다inverse 속성 반전 속성
hibenate 에서'inverse'속성 은 관련 관계 의 방향 을 지정 합 니 다.
관련 관계 에서'inverse='false'는 주동 적 인 측 이 고 주동 적 인 측 이 관련 관 계 를 유지 하 는 것 을 책임 집 니 다.
order-by 속성 은 집합 내 요소 의 정렬 순 서 를 지정 합 니 다.
여 기 는 직원 과 부 서 를 예 로 들 면 부서 내의 직원 들 이 나이 가 거꾸로 되 는 순서 로 순 서 를 매기 면 order-by 속성 을 설정 할 수 있 습 니 다.
order-by="age desc"
다 중 연관 성직원 과 프로젝트 의 경우 한 직원 이 여러 프로젝트 에 참여 할 수 있 고 각 프로젝트 에 여러 직원 이 참여 할 수 있다.
프로젝트 클래스 를 설정 하고 클래스 에 집합 속성 을 추가 하여 직원 의 인용 을 저장 합 니 다
프로젝트 클래스
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 속성 은 세 번 째 관련 표 에 대응 합 니 다
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 입 니 다.
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA 및 PostgreSQL 텍스트다음은 의 친구들과 논의한 후 오랫동안 초안으로 작성한 블로그 게시물이며 ( ) 주제에 대한 훌륭한 기사를 작성했기 때문에 여기에 작은 테스트를 게시하고 있습니다. JPA 주석 없이 String를 선언합니다. 재현하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.