2016년 7월 29일 금요일

(방학특강) [스프링JPA강좌]@OneToMany컬렉션매핑,List,@OrderColumn예제,1:N 연관관계 -스프링실무교육학원


(방학특강) [스프링JPA강좌]@OneToMany컬렉션매핑,List,@OrderColumn예제,1:N 연관관계 -스프링실무교육학원

 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
}

예제는 첨부 파일 참조하세요.

댓글 없음:

댓글 쓰기