4차산업혁명의 일꾼/Java&Spring웹개발과 서버 컴퓨터

JPA 간단 정리 1

르무엘 2024. 9. 12. 09:37

데이터중심의 마이바티스와 달리 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 에서 나타난다.

 

 

LIST