[7] Spring - 개인과제_2차 JPA 다루기 트러블 슈팅

2024. 10. 17. 09:08Spring/JPA 개인과제

728x90

※ 일정관리 게시판

- 필수 0,1,2,3,4,5
- 도전 1,2,3,4 

레벨 기능 내용
필수레벨 0 API명세서, 테이블생성쿼리문, ERD
필수레벨 1,2,4 각 테이블에 대한 CRUD
필수레벨 3,5 일정페이징, 예외처리
기타 일정삭제시 댓글삭제 - (영속성전이), 각 Entity에 대한 연관관계 설정하기.
도전 1,2 회원가입,로그인
도전 3,4 권한 확인(인가), 외부API연동


 

1)  Entity간 연관관계 오류

1-1) 개요

- 제공된 강의를 다 수강 후에 과제를 진행하기엔 시간이 부족해서 검색해가면서 임의로 진행을 하는 과정에서 문제발생

 

1-2) 배경

-  @ManyToOne과 @OneToMany를 사용하는데 정확한 사용용도를 모르고 사용을 했다.

 

1-3) 진행

- 검색해서 안좋은 예시로 연관관계로 이을려는 테이블 사이에 임의의 테이블이 생성된다고 하였는데 딱 그러한 상황이 발생했다.
 

1-4) 위기

- 검색으로 봤던 예시와 동일하게 진행했는데 계속 임의의 테이블이 생성이되고,  AnnotationException: mappedBy reference an unknown target entity property 같은 오류만 자꾸 발생했다.

 

1-5) 결말

- 1차로 members(유저), schedules(일정), comments(댓글) Entity 3개를 동시에 이으려고 @ManyToOne과 @OneToMany를 동시에 사용하면서 오류들이 발생했다. 또한 @ManyToOne을 사용할땐 상단에 컬럼과 필드를 매핑하는 @Column을 지우고 @JoinColumn을 사용해서 컬럼관련설정과 외래키 설정을 동시에 해야한다는 점을 깨달았다.

@ManyToOne에서 @JoinColumn으로 @Column을 사용했을때의 중복매핑의 오류를 해결하고 나니 Schedule Entity에서 @ManyToOne과 @OneToMany를 동시에 사용하는데 오류없이 잘 사용되고있다.

https://kuk1938.tistory.com/170
 

 

[6] Spring - 개인과제_2차 JPA다루기 (필수레벨)

※ 일정관리 게시판 만들기(JPA기반)ㄴ 레벨 필수 0,1,2,3,4,5ㄴ 레벨 도전 1,2,3,4로 구성 ※ 지난번에 Spring인데 view에서 통신하는 부분만 주로 다루어서 실수를 했다고 생각한다.ㄴ 이번엔 좀 더 자

kuk1938.tistory.com

ㄴ 필수레벨에서 작성한 연관관계 표이다.

 

※ [ 회고 ] 

좋았던 점)

연관관계를 강의를 수강하지 않고 검색하면서 진행했는데 처음에 강의라는 가이드가 없으니 엄청나게 길을 헤맸다.
그러나, 그 길을 직접 헤매면서 본인이 길을 익히면서 가게되니 머리속에 확실히 더 남는것 같았다.
연관관계관련해서 직접 오류를 겪어보고 이상하게 중간에 테이블도 임의로 생성되어보고 여러 경험들을 겪고나서 "아 여기서 이렇게 하면안되고 저렇게해야하는구나"라는걸 직접느껴서 좋았다.나중에 최종프로젝트나 현업에 가서도 Entity 연관관계는 적어도 @ManyToOne과 @OneToMany는 안 헷갈릴수 있겠다라는 자신감이 생겼다.

 

그리고 이번에 트러블슈팅전에 과제정리를 평소보다 몇배는 더 자세하고 꼼꼼하게 진행을 했는데 내가 사용했던부분을 검색해보면서 한번 더 되돌아보고 복습이 자동으로 되는 시간이었던거 같아서 좋았다.저번 일정관리 1차개인과제는 view랑 spring을 둘다 구현을 하긴했지만, 블로그 포스팅에 페이징에 꽂혀서 view관련으로 작성하는 실수를 저질렀는데 이번엔 철저하게 Spring의 대한 전체내용을 다루면서 도움이 되어서 좋았다.


아쉬웠던 점)

연관관계와 반대로 JWT는 강의를 수강하고 진행을 했는데 강의에서 주어진 가이드가 있다보니 처음에 길을 헤매는 경우는 없었다. 그러나, 직접 개척해보는 길이 아니어서 그런지 확실하게 학습이 되었다라는 느낌은 없는 것 같다.이번 과제 자체가 시간이 워낙 부족하기도 했고, 복습하는 시간이 부족해서 그런거 같다라는 생각도 든다.JWT가 정말 중요한 만큼 여유 시간이 생긴다면 꼭 복습하는 시간을 가지고 싶은데 생길지 모르겠다..ㅠㅠ

 

그리고 상세한 기능에 대해서 제대로 구현을 못한 부분이 있는데 이부분이 많이 아쉽다.
시간이 부족한 점이 컸는데 나중에 충분한 시간을 가지고 구현을 하는 기회가 있었으면 좋겠다. 

728x90