데이터중심의 마이바티스와 달리 JPA는 객체 중심의 hibernate 이다.
https://www.youtube.com/watch?v=brE0tYOV9jQ&t=98s
이 ORM을 쓸줄 모르면~!
쓰지 말라고 백기선 님께서 말씀하신다.
TDD책에서 등장하신 분이네요~!
연관관계 매핑을 제대로 할 지 모르면 쓰면 안된다고 하네요~!
어쨌건, JPA 김영한님 책 보면서 공부한거 정리해 봅니다.
쭈욱 보니까 JPA가 재밌는 건 data 중심에서 객체지향 중심으로 table을 설계한다는 것~!
상속매핑은 부모클래스에 @inhteritance를 사용한다. 조인전략
부모클래스에 구분 컬럼을 지정한다. 이 컬럼으로 저장된 자식 테이블을 구분할 수 있다.
@DiscriminatorValue("B") // 구분 컬럼에 입력할 값을 지정한다.
@PrimaryKeyJoinColumn(name = "BOOK_ID") // ID재정의
상속은 inhertiance annotation으로 하는데 DiscriminatorValue에 type을 지정해서 구분 할 수 있다.
부모 class는 DTYPE으로 하고 상속 받은 클래스들은 A,B... C,D 이렇게 구분하는 것이다.
table 생성시에 sequence 설정은 이런식으로 할 수 있고, 사실상 PK가 비식별 대체키라 여기다가 sequence rule도 적용하는군요~!
시퀀스 전략을 테이블에 만든 경우 PK컬럼에 generator로 시퀀스를 지정해줘야 한다.
여기서 테이블 만들고 변수설정하는 것도 다 간단할텐데~!
관계매핑이 까다로울 수 있다.
왜냐하면 방향성이 있고 양방향은 연관관계의 주인을 정해야 하기 때문이다.
보통 sql은 왜래키 FK를 썼는데, JPA는 객체지향 답게 참조(주소)로 연관관계를 맺는다.
data model을 객체지향적으로 가공하면서, 사용자가 주문하는 모델을 만들어 봤다~!
다대다 관계 상품과 카테고리~!
상품과 카테고리는 다대다 관계인데~!
거기서 더 재밌는건 상품의 카테고리를 이렇게 상속으로 만들어서 구현했다.
주문도 다대일과 일대다의 관계를 잘표현했다. OrderItem과 User 에서 나타난다.
'4차산업혁명의 일꾼 > Java&Spring웹개발과 서버 컴퓨터' 카테고리의 다른 글
JPA 간단정리3 (2) | 2024.09.16 |
---|---|
JPA 간단정리 2 (0) | 2024.09.16 |
백엔드 TDD 비디오가게편 (0) | 2024.09.03 |
백엔드와 테스트 주도 개발 자판기편 (2) | 2024.09.02 |
이벤터스 월간 볼트 X 커피챗 : 토스증권, 라포랩스, 스윙 (2) | 2024.09.01 |