log

[Spring boot] 연관 관계 매핑 정리 본문

SpringBoot

[Spring boot] 연관 관계 매핑 정리

sun_young 2023. 7. 22. 22:43

[참고] '백견불여일타 - 스프링 부트 쇼핑몰 프로젝트 with JPA' 책을 참고하여 작성된 글입니다!

https://product.kyobobook.co.kr/detail/S000001624717

 

백견불여일타 스프링 부트 쇼핑몰 프로젝트 with JPA | 변구훈 - 교보문고

백견불여일타 스프링 부트 쇼핑몰 프로젝트 with JPA | 스프링 부트와 JPA를 활용하여 실제 이커머스 업계에서 활용되는 쇼핑몰 기술들을 직접 구현해볼 수 있게 구성하였다. JPA와 Thymeleaf에 대한

product.kyobobook.co.kr

 

1. 연관 관계 매핑

- 일대일 (1:1) : @OneToOne

- 일대다 (1:N) : @OneToMany

- 다대일 (N:1) : @ManyToOne

- 다대다 (N:M) : @ManyToMany

 

2. 개인 프로젝트 적용 예시

한 사용자는 여러 개의 게시글을 작성할 수 있기 때문에 @ManyToOne을 적용하였다

 

* 이때  User 엔티티를 그대로 받아야 하는지 모르고 String으로 사용자 아이디만 받아서 오류가 발생했다 

그래서 controller에서 userService에 구현한 getUserByUserId 함수를 통해 입력받은 user 아이디를 통해 User 엔티티 객체를 반환하고, dto를 엔티티로 변환하는 함수에 같이 넘겨주었다

 

게시글의 제목, 내용은 dto에서 넘겨받고, 매개변수로 받은 user 객체를 set 한다

 

데이터베이스에도 제대로 저장이 되는 것을 확인할 수 있다 

 

→ 일단 내 생각에는 이게 최선인데 나중에 코드가 더 추가되면 복잡해질 것 같기도 해서 더 좋은 방법을 생각해 봐야 할 것 같다ㅜ