Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • ManyToOne : 다대일 관계 매칭정보
  • JoinColumn : 외래키를 매핑때 사용함
  • mappedBy : 연관관계설정시 주인이 아님을 설정
  • OneToMany : 일대다 관계 매핑정보
  • OneToOne : 일대일 관계 매칭정보, 어느곳이나 외래키를 가짐
  • ManyToMany : 다대다 관계매칭정보, 맵핑테이블을 만들어서 사용하기를 권장
  • 연관관계주인 : 외래키가 있는곳이 주인이며 주인만이 수정가능 아닌경우 조회만가능


외래키/인덱스

JPA를 사용하면 , 테이블생성 SQL문을 직접적으로 테이블생성을 SQL문으로 직접 하지 않는 전략을 선택하기 때문에

인덱스설정/외래키설정등이  자동적으로 생성됩니다. 자신이 설계한, JPA CLASS가 어떠한 테이블 스키마에서

어떠한 관계가 형성이되고 인덱스를 설정하는지 파악하는것은 중요한 사안입니다.


Warning

반대로, 테이블 생성을 개발자가 할수 없는 체계라고 하면, spring.jpa.hibernate.ddl-auto=none 전략으로 갈수도 있습니다.

이경우 운영 DB의 테이블 업데이트는 어플리케이션이 할수 없는 권한구조가 미리 약속되었다라고 해둡시다.

JPA에서는 어쨋든 기존 테이블 스키마를 ,OOP로 옮기려고 할것이고 테이블에 설계된 외래키 설정및 1:? 관계를 파악하지 못하고

JPA를 사용하려고 한다면,  연관된 테이블의 참조를 얻기가 불가능할것입니다.

SQL중심적 개발에서는 자유롭게 JOIN을 하여 모든 테이블 참조를 얻을수도 있고 집합도 만든반면,

JPA에서는 테이블의 연관성을 파악하지 못하면 OOP 레벨에서 아무것도 할수 없는 상황이 생깁니다.

이러한 제약은 오히려 데이터베이스를 더 공부해야하는 요소라고 볼수 있습니다.


식별관계 VS 비식별관계

  • 식별 관계는 부모 테이블의 기본 키를 자식 테이블로 전파하면서 자식 테이블의 기본 키 컬럼이 점점 늘어난다. 그러면 조인할 때 SQL이 복잡해지고 기본 키 인덱스가 불필요하게 커질 수 있다.
  • 식별 관계는 2개 이상의 컬럼을 합해서 복합 기본 키를 만들어야 하는 경우가 많다.
  • 식별 관계를 사용할 때 기본 키로 비지니스 의미가 있는 자연 키 컬럼을 조합하는 경우가 많다. 반면에 비식별관계의 기본 키는 비지니스와 전혀 관계없는 대리 키를 주로 사용한다. 언제든지 요구사항은 변한다. 식별 관계의 자연 키 컬럼들이 자식에 손자까지 전파되면 변경하기 힘들다.
  • 식별 관계는 부모 테이블의 기본 키를 자식 테이블의 기본 키로 사용하므로 비식별 관계보다 테이블 구조가 유연하지 못하다.

...