Page History
...
그 목적을 달성하기위해 데이터베이스와 객체지향의 몇가지 차이점을 알아야합니다.
Class VS Table
Code Block | ||||
---|---|---|---|---|
| ||||
class User{ int id; string name; string email; } class ClickLog{ int clickid; User user; string clickurl; } TABLE User{ int id varchar name varchar email } TABLE ClickLog{ int clickid int userid -- user id를 바라보는 외래키 varchar clickurl; } |
...
- ManyToOne : 다대일 관계 매칭정보
- JoinColumn : 외래키를 매핑때 사용함
- mappedBy : 연관관계설정시 주인이 아님을 설정
- OneToMany : 일대다 관계 매핑정보
- OneToOne : 일대일 관계 매칭정보, 어느곳이나 외래키를 가짐
- ManyToMany : 다대다 관계매칭정보, 맵핑테이블을 만들어서 사용하기를 권장
- 연관관계주인 : 외래키가 있는곳이 주인이며 주인만이 수정가능 아닌경우 조회만가능
식별관계 VS 비식별관계
- 식별 관계는 부모 테이블의 기본 키를 자식 테이블로 전파하면서 자식 테이블의 기본 키 컬럼이 점점 늘어난다. 그러면 조인할 때 SQL이 복잡해지고 기본 키 인덱스가 불필요하게 커질 수 있다.
- 식별 관계는 2개 이상의 컬럼을 합해서 복합 기본 키를 만들어야 하는 경우가 많다.
- 식별 관계를 사용할 때 기본 키로 비지니스 의미가 있는 자연 키 컬럼을 조합하는 경우가 많다. 반면에 비식별관계의 기본 키는 비지니스와 전혀 관계없는 대리 키를 주로 사용한다. 언제든지 요구사항은 변한다. 식별 관걔의 자연 키 컬럼들이 자식에 손자까지 전파되면 변경하기 힘들다.
- 식별 관계는 부모 테이블의 기본 키를 자식 테이블의 기본 키로 사용하므로 비식별 관계보다 테이블 구조가 유연하지 못하다.
Info |
---|
이후 샘플은 비식별관계만 이용하여, JPA특성을 살펴 보겠습니다. JPA 관계에대해 더 자세한 정보는 아래 블로그에 잘 정리가 되었으며 여기 자료도 일부 참고하여 정리하였습니다. URL : http://wonwoo.ml/index.php/post/832 -머루의 개발 블로그 |
ManyToOne
위 샘플에서 사용자(User) 데이터 모델링에서, 사용자가 속한 그룹을 표한하는 테이블을 추가해보겠습니다.
...