N:1 양방향관계에서 1쪽에서 N쪽으로의 방향성 또는 1:N 단반향에서는 컬렉션을 참조하므로 Set, List, Map을 사용할 수 있다.
1:N 관계는 잘 사용되지 않으며, 1:N 단방향 보다는 M:1 양방향 관계를 사용하는 것이 좋다.
List는 순서가 있고 중복을 허락하는 자료구조 이므로 자료들의 순서를 알 수 있고, 정렬이 가능하다. 자료들의 순서(인덱스)를 알기 위해서는 별도 인덱스 칼럼이 정의되어야 한다.(반대쪽 테이블인 Emp쪽에 해당 칼럼이 생성된다.)
Map은 Key, Value 쌍으로 자료를 저장하는데 key설정을 위해 @MapKey를 사용하며, 실제 테이블의 칼럼을 지정할 때는 @MapKeyColumn을 사용한다.
@Entity
@Table(name = "dept")
public class Dept {
@Id
@GeneratedValue
private Long deptno;
private String dname;
@OneToMany(mappedBy=“dept”, cascade=CascadeTYpe.ALL)
@OrderBy(“dname DESC”)
@OrderColumn(name=“emp_index”)
private List<Emp> emps;
//getter, setter
}
@Entity
@Table(name = "emp")
public class Emp {
@Id
@GeneratedValue
private Long empno;
private String ename;
//@JoinColumn은 외래키매핑용
@ManyToOne
@JoinColumn(name="deptno")
private Dept dept;
//getter, setter
}
예제는 첨부 파일 참조하세요.
첨부파일 URL참조 - http://ojc.asia/bbs/board.php?bo_table=LecJpa&wr_id=218
댓글 없음:
댓글 쓰기