Articles

최대 절전 모드는 한 많은 주석 튜토리얼

소개

이 빠른 Hibernate tutorial 것을 통해 우리의 예을 매핑을 사용하여 JPA 주석,대신 XML.

우리는 또한 배울 것이 무엇 양방향 관계가,어떻게 만들 수 있습 불일치,그리고 얼마나의 아이디어 소유권이 도움이 될 수 있습니다.

추가 읽기:

봄 부팅이 최대 절전 모드

,빠르고 실용적인 소개를 통합하는 봄 부팅 및 Hibernate/JPA.
더 읽기→

의 개요를 식별자에서 최대 절전 모드/JPA

하는 방법을 배우지도 entity 식별자와 함께 왔습니다.
더 읽기→

Description

단순히 넣어하는 많은 매핑을 의미는 하나의 행에는 테이블은 매핑을 여러입니다.

의 다음과 같은 엔터티 관계 다이어그램을 표시하는 많은 association:

이 예를 들어,우리를 구현하는 카트 시스템이 어디 우리는 테이블에 대한 각 카트 및 다른 테이블의 각 항목입니다. 하나의 장바구니에는 많은 항목이있을 수 있으므로 여기에 일대 다 매핑이 있습니다.

이 작품에서 데이터베이스 레벨은 우리는 cart_id 기본 키로 장바구니에 테이블도 cart_id 으로서 외국에서 키 항목입니다.우리가 코드에서 수행하는 방식은@OneToMany 입니다.

의 지도 카트 클래스의 항목체에 반영 하는 방식으로 데이터베이스에 관계:

public class Cart { //... @OneToMany(mappedBy="cart") private Set<Items> items; //...}

우리는 또한 참조를 추가 장바구니에 항목을 사용하여@ManyToOne,이 양방향 관계입니다. 양방향은 우리가 카트에서 항목에 액세스 할 수 있음을 의미하며,또한 항목에서 카트입니다.

mappedBy 속성은 Hibernate 에 자식 클래스의 부모 클래스를 나타내는 데 사용하는 변수를 알려주는 데 사용하는 것입니다.

는 다음과 같은 기술과 라이브러리에 사용되는 순서를 개발하는 샘플이 최대 절전 모드 응용 프로그램을 구현하는 다 association:

  • JDK1.8 또는 그 이후
  • Hibernate5
  • Maven3 이상
  • H2 데이터베이스

설정

3.1. 데이터베이스 설정

다음은 장바구니 및 항목 테이블에 대한 데이터베이스 스크립트입니다. 우리가 사용하는 외국인 키의 제약 조건을 매핑:

우리의 데이터베이스 설치 준비가되어,그래서로 이동하자를 만드는 최대 절전 모드를 들어 프로젝트입니다.

3.2. Maven 종속성

그런 다음 최대 절전 모드 및 H2 드라이버 종속성을 pom 에 추가합니다.xml 파일. 최대 절전 모드를 종속성을 사용 JBoss 로깅,그리고 자동으로 추가적 의존성:

  • 최대 절전 모드 버전 5.2.7.최종
  • H2 드라이버 버전 1.4.197

최신 버전의 Hibernate 및 H2 종속성에 대해서는 Maven central 저장소를 방문하십시오.

3.3. 최대 절전 모드 구성

여기에 구성의 최대 절전 모드:

3.4. HibernateAnnotationUtil Class

로 HibernateAnnotationUtil 래,우리는 단지 참조해야 하는 새로운 최대 절전 모드 구성 파일:

모델

매핑에 관한 구성을 사용하여 수행됩니다 JPA 주석 모델에서 클래스:

@Entity@Table(name="CART")public class Cart { //... @OneToMany(mappedBy="cart") private Set<Items> items; // getters and setters}

참고해 주십시오@OneToMany 주석은을 정의하는 데 사용한 숙박 시설에 항목이 되는 클래스 서비스를 제공하는 데 도움이 됩 mappedBy 변수입니다. 그렇기 때문에 Items 클래스에”cart”라는 속성이 있습니다.

@ManyToOne 주석이 Cart 클래스 변수와 관련되어 있다는 점도 중요합니다. @JoinColumn 주석은 매핑 된 열을 참조합니다.

에서 동작

에서 테스트 프로그램으로,우리는 클래스를 만드는 main()메소드를 사용해 얻는 최대 절전 모드 세션과 모델을 저장하기로 데이터베이스를 구현하는 one-to-many association:

이 출력하는 우리의 테스트 프로그램:

는@ManyToOne 주석

우리가 본 바와 같이 2 절에서,우리는 우리를 지정할 수 있습 많은 관계를 사용하여@ManyToOne 주석이 있습니다. 는 많은 매핑을 의미하는 많은 경우 이의 엔티티가 매핑을 하나의 인스턴스의 또 다른 entity–많은 품목에서 하나 cart.

@ManyToOne 주석을 사용하면 양방향 관계도 만들 수 있습니다. 다음 몇 가지 하위 섹션에서 자세히 다룰 것입니다.

6.1. 불일치고 소유권

경우,지금 Cart 참조하는 항목만,항목이지 않에 참조레,우리의 관계가 단방향으로 이루어집니다. 객체는 또한 자연스러운 일관성을 가질 것입니다.그러나 우리의 경우 관계는 양방향이므로 불일치 가능성을 초래합니다.

자의 상황을 상상 개발자를 추가하고 싶어 item1 장바구 및 item2 을 cart2,그러나 실수는 참조를 사 cart2 및 item2 가 일치하지 않는다.

위와 같이,item2 참조 cart2 는 반면,cart2 지 참조 item2,그리고 나쁘다.

최대 절전 모드는 어떻게 item2 를 데이터베이스에 저장해야합니까? Item2 외래 키 참조 cart1 또는 cart2?

우리는 우리를 해결이 모호성의 아이디어를 사용하여 소유하는 측면의 관계,참조에 속하는 소유하는 측면에 우선하는 데이터베이스에 저장됩니다.

6.2. 항목으로 소유하는 측

에 명시된 바와 같이 JPA 사양에서 섹션 2.9,그것은 좋은 연습을 표시하는 한 쪽으로 소유하는 측면이다.즉,항목은 소유 측면이되고 역 측면을 장바구니에 담는 것인데,이는 우리가 이전에했던 것과 정확히 같습니다.

그래서 우리는 어떻게 이것을 달성 했습니까?

카트 클래스에 mappedBy 특성을 포함시킴으로써 역변으로 표시합니다.

동시에,우리는 또한 항목을 주석.@ManyToOne 와 카트 필드,항목을 소유 측면 만들기.

우리의”불일치”예제로 돌아가서,이제 Hibernate 는 item2 의 참조가 더 중요하다는 것을 알고 item2 의 참조를 데이터베이스에 저장합니다.

의 체크인 결과:

item1 ID=1, Foreign Key Cart ID=1item2 ID=2, Foreign Key Cart ID=2

지만 카트를 참조 item2 에서 우리의 조각,item2 참조하 cart2 은 데이터베이스에 저장됩니다.

6.3. Cart 으로 소유하는 측

그것은 또한 가능한 마을 옆으로 소유하는 측면 및 한쪽으로 역 측.이것이 권장되는 연습은 아니지만,가서 시도해 봅시다.

아래 코드 조각 구현을 보여줍니의 많은 측면으로 소유하는 측면:

통지 우리가 어떻게 제거 mappedBy 요소를 설정하@JoinColumn 으로 삽입 업데이트하는 거짓입니다.

경우에 우리는 실행 코드와 동일,결과는 반대:

item1 ID=1, Foreign Key Cart ID=1item2 ID=2, Foreign Key Cart ID=1

위와 같이,이제 item2 그리고 카.

결론

우리는 우리가 볼 수 있는 방법을 쉽게를 구현하는 것 중 하나는 관계로 최대 절전 모드 ORM 및 H2 데이터베이스를 사용하여 JPA 할 수 있습니다.또한 양방향 관계와 소유 측면의 개념을 구현하는 방법에 대해 배웠습니다.