중요하다고 하는데 

nullable = false 

- not null 제약조건이 걸리게 된다. 

- 자주 쓰인다. 

 

EnumType.ORIDINAL: enum 순서를 데이터베이스에 저장 

EnumType.STRING: enum 이름을 데이터베이스에 저장 

이름을 데이터베이스에 저장해야하는데 ORIDINAL을 써서 데이터베이스에 저장하게 되면은 숫자 0부터 들어가기 때문에 

데이터가 난리가 난다. 그러니 클래스에서 기본 셋팅 값으로 String으로 가져가는게 맞다. 

 

 

기본키 맵핑 

strategy = GenerationType.SEQUENCE

private Long id; 을 써야하는데 왜냐하면 

 

 

PK를 주민번호를 쓰면은 다른 조인되어있는 테이블이 있기 때문에 

다 바꿔야한다. 

 

만약 이 경우를 PK를 대체키를 쓴다면은 해당 테이블값만 바꾸면 된다. 

 

권장:Long형 + 대체키 + 키 생성전략 사용 

 

 

객체지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것이다. - 조영호 

@GenerateValue -> Primary key를 생성하여 주는 기능이다. 

 

단방향 연관관계 

 

테이블은 외래 키로 조인을 해서 연관된 테이블을 찾느다 

객체는 참조를 사용해서 연관된 객체를 찾는다. 

 

 

양방향 연관관계와 연관관계의 주인 

 

양쪽으로 참조해서 갈수있게 하는 것이다. 

테이블 연관관계는 차이가 없다. 

@OneToMany(mappedBy = "team")

반대편 사이드에는 team으로 걸려있다. 

객체와 테이블간에 연관관계를 맺는 차이를 이해해야 한다. 

객체 연관관계  = 2개 

  회원 -> 팀 연관관계 1개 (단방향)  

   팀 -> 회원 연관관계 1개(단방향) 

테이블 연관관계 = 1개 

    회원 <-> 팀의 연관관계 1개(양방향) 

 

양방향 매핑 규칙 

  • 객체의 두 관계중 하나를 연관관계의 주인으로 지정 
  • 연관관계의 주인만이 외래 키를 관리(등록, 수정) 
  • 주인이 아닌쪽은 읽기만 가능 
  • 주인은 mappedBy 속성 사용x 
  • 주인이 아니면 mappedBy 속성으로 주인 지정 

 

외래키가 있는 곳을 주인으로 정해라 

그 이유는 맴버를 바꾸었더니 맴버에 쿼리가 나가는구나 직관적으로 나가기 때문에 

이 기준이 기준이 된다. 

 

 

 

 

 

'- 코딩 공부' 카테고리의 다른 글

JPA 실전  (0) 2023.09.03
JPA - 객체지향 쿼리 언어1  (0) 2023.07.31
JPA 정리 - 어디인지 모르겠음  (0) 2023.06.17
JPA - 다양한 연관관계 매핑  (0) 2023.06.11
JPA 영속성 관리 - 내부 동작 방식  (2) 2023.05.17

+ Recent posts