본문 바로가기

Java, Spring/스프링부트와 JPA 활용 1

2-3. 엔티티 클래스 개발1

이거 보고 @Entity public class Member 생성.

 

 

Address.java

@Embeddable로 JPA의 내장타입(어디에 내장될수있음을 표시)

@Getter 는 열어두자.

 

 

테이블 명 생각하면서 만들자 ( orders 같이 )

 

 

 

Order 클래스                                                                                           Member 클래스

 

 

서로 양방향연관관계이므로 연관관계주인을 정해줘야됨. ( 보통 다 쪽에 정함 )

서로 값을 바꿀 수 있으므로 JPA는 둘 중에 뭘보고 확인을 해야하는지 혼란. ( 관리하기도 어려움. )

-> 연관관계주인을 정해서 걔가 바꾸는 값만 따르자..-> 다 쪽에 FK잡자.

 

many 쪽인 orders 테이블 쪽이 연관관계주인이 된다. FK이름을 member_id로 정한다.  

(연관관계주인=FK와 가까운 것)

 

 

다대일에서는 다쪽이 연관관계주인(FK가까운쪽(다 쪽이 FK를가지므로)). 일대일에서는 FK가까운쪽이 연관관계주인.(FK는 access많이 하는 쪽으로 정함. )

=-> 여기선 delivery에서 orders 접근보다 orders에서 delivery 접근이 더 많으므로 orders에 FK.

( 연관관계 주인에는 @ManyToOne과 @JoinColumn은 한몸, @OneToMany(mappedBy="") 형식 기억해두기. )

 

 

 

#무조건 중요....

 

연관관계주인 : @ManyToOne -> @JoinColumn(매핑할 칼럼명)(=보통 One쪽테이블의 PK명)

                        @OneToOne -> @JoinColumn(자기 필드_id)

거울 : @OneToMany -> (mappedBy = "주인쪽 필드명")

         @OneToOne -> (mappedBy = "주인쪽 필드명")

 

 

# OneToOne

(DELIVERY-ORDERS)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

# Item과 그 밑에 3개

 

Item.java

상속관계이므로  @Inheritance, dtype으로 구분하므로 @DiscriminatorColumn(식별이라는 뜻)

 

Book.java

 

Album.java
Movie.java

각각 상속클래스에서 DB에 저장될 때 구분자역할을 하는 @DiscriminatorValue를 정해준다. 보통 클래스의 앞글자를 적는다.

 

 

 

-> 다음 강의 : 남은 category 엔티티 만들자.

 

 

 

 

 

결론 : 

클래스
테이블

 

Recent Posts
Popular Posts
Recent Comments