. 나는 매우 ObjectDB website을 살펴볼 것을 제안한다.
@Entity
@Table(name = "CUSTOMER")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "FIRST_NAME") //Attributes in the entity
private String firstName;
@Column(name = "LAST_NAME")
private String lastName;
@Column(name = "ADDRESS")
private String address;
@OneToMany(mappedBy = "customer")
private List<Address> addresses;
}
과 같은 주소 클래스에서 고객에 대한 참조가 :
이 특정 시나리오의
, 당신은 아래를 정의 할 수 있습니다
@Entity
@Table(name = "ADDRESS")
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "STREET_NAME") //Attributes in the entitiy
private String streetName;
@Column(name = "HOUSE_NUMBER")
private int houseNumber;
@ManyToOne(fetch = FetchType.LAZY)
private Customer customer;
}
이 편집 : 귀하의 요청을 바탕으로 여러 관계에 대한 예를 보려면 고객 및 주소 엔티티에 대해 구현할 수있는 방법을 다음과 같습니다.
먼저 고객 테이블을 참조하는 두 개의 외래 키와 주소를 참조하는 다른 외래 키가있는 중간 테이블을 가져야합니다.
select * from customer_address;
customer_id | address_id
------------------------
12 | 15
12 | 14
12 | 13
2 | 15
2 | 13
19 | 11
지금 당신은 당신의 주석을 업데이트하고 엔티티 사이에 많은 관계로 많은 추측이 표를 사용하여 JPA를 말해야한다 :이 중간 테이블 customer_address
이름을 가정 해, 다음의 데이터는 다음과 같이 될 것이다.
고객 클래스 :이 코드 주석에서
@Entity
@Table(name = "CUSTOMER")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "FIRST_NAME") //Attributes in the entity
private String firstName;
@Column(name = "LAST_NAME")
private String lastName;
@Column(name = "ADDRESS")
private String address;
@ManyToMany(mappedBy = "customer")
@JoinTable(name = "customer_address",
joinColumns = @JoinColumn(name = "customer_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "address_id", referencedColumnName = "id"))
private List<Address> addresses;
}
@Entity
@Table(name = "ADDRESS")
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "STREET_NAME") //Attributes in the entitiy
private String streetName;
@Column(name = "HOUSE_NUMBER")
private int houseNumber;
@ManyToMany(mappedBy = "customer")
@JoinTable(name = "customer_address",
joinColumns = @JoinColumn(name = "address_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "customer_id", referencedColumnName = "id"))
private List<Customer> customer;
}
는 JPA에 다음과 같은 정보를 제공하는 데 사용됩니다 :
@ManyToMany
는 다음을 지정하는 데 사용 :
@JoinTable
관계의 유형을 나타냅니다 테이블은 실제 관계 데이터를 보유하고 있으며 다음과 같은 속성을 가지고 있습니다.
joinColumns
: @ManyToMany
주석을 포함하는 엔티티 클래스를 참조하는 중간 테이블의 열을 정의합니다. Customer
클래스에서는 외래 키인 열을 customer
테이블로 정의하고 Address
클래스에서는 address
테이블의 외래 키인 열을 정의합니다.
inverseJoinColumns
: 정확히 joinColumn
속성과 반대입니다. @ManyToMany
주석의 다른쪽에있는 엔티티 클래스를 참조하는 중간 테이블의 열을 정의합니다.Customer
클래스에서는 address
테이블에 외래 키 열을 정의하고 Address
클래스에는 customer
테이블에 외래 키 열을 정의합니다.
은 내 설명을 그것이 있어야로 이해 /로 읽을 수없는 것을 알고 있지만, 그것이 @JoinTable
주석을 설명하기 쉽지 않다 알고있다. 샘플 코드 자체를 읽고 열/속성 이름을 일치 시키면 각각의 의미를 쉽게 찾을 수 있습니다. 또한 ObjectWeb 웹 사이트 (샘플도 포함)에서 확인할 수 있습니다.
Google 검색을 수행해주세요. 나는 SO가 많은 예제를 가지고 있다고 생각한다. – pirho