1년 전 진행했던 마실가실 프로젝트를 🛠️리팩토링하며 정리한 내용입니다.
Table을 만드는 방법은 크게 2가지입니다.
* Database에서 직접 CREATE TABLE 하기
* JPA의 DDL 생성 기능 활용하기
원래도 JPA의 DDL문 생성 기능을 활용했으므로 Column만 먼저 바꿔볼 예정입니다.
관계에 의한 Mapping도 변경을 해줘야하는데, 그건.. 차근차근 해보겠습니다🫠.
+ 리팩토링
- UserEntity.java → User.java
- 의미없는 Annotation 정리(사용하지 않는 값, Default값 사용 등)
- PK값 데이터 타입을 조회 성능을 고려하여 varchar → Integer 변경
- 데이터 입력 자동화
- @CreatedDate, @LastModifiedDate
+ 리팩토링
- TripSchedule.java → Trip.java
- 의미없는 Annotation 정리
- @Buider와 @NoArgsConstructor
- 상황
- Trip Entity는 기본 생성자가 필요한 상황이나 모든 필드를 대상으로 하는 AllArgsConstructor는 필요 없는 상황
- 문제
- @Buider, @NoArgsConstructor만 사용 시, 'constructor Trip in class Trip cannot be applied to given types' 오류 발생
- 원인
- 클래스 레벨 @Builder
- 생성자가 없는 경우, @Builder는 클래스의 모든 멤버 변수를 파라미터로 받는 생성자를 생성
- 생성자가 이미 있는 경우, @Builder는 기존의 생성자를 활용하며 새로운 생성자를 생성하지 않음
- @NoArgsConstructor에 의해 기본 생성자 생성 → @Builder 추가적인 생성자 생성 X
- 이후, @Builder에 의해 생성된 빌더 클래스 내부에서 해당 타입의 인스턴스를 생성할 때 모든 멤버 변수를 초기화하는 생성자 호출 시도
- required: no arguments
- found: all arguments
- 클래스 레벨 @Builder
- 해결 방법
- @Builder 어노테이션을 생성자 레벨에서 사용
- @AllArgsConstructor 추가 사용
- 상황
- @Buider와 @NoArgsConstructor
+ 리팩토링
- TripDailySchedule.java → TripDay.java
- ERD에 맞춰서 수정
+ 리팩토링
- TripDatailSchedule.java → DayDestination.java
- ERD에 맞춰서 수정
+ 리팩토링
(2024.08.04)
- 복합키 설정
- 일정 테이블과 리뷰 사진 테이블에 복합키 설정 추가
- @IdClass 사용
- 연관 관계 매핑 시, @JoinColumns로 변경
- 양방향 연관 관계 매핑 → 단방향 연관 관계 매핑
- 양방향 참조 관계 설정으로 인한 toString()의 무한 루프 오류를 줄이기 위해 초기 단방향 참조 관계 설정 후, 필요시 양방향 참조 관계로 변경 예정
- 양방향 연관 관계 설정 시 유의 사항
- 주인 = 외래키를 보유하고 있는 곳, 1:N 관계에서 N에 해당하는 곳, @ManyToOne 어노테이션을 사용하는 곳
🙋♀️
본 포스트는 공부 목적으로 작성하였습니다.
보시는 도중 잘못된 부분이나 개선할 부분이 있다면 댓글로 알려주시면 수정하도록 하겠습니다.
📑
참고 자료
'PlayGround > 마실가실 리팩토링' 카테고리의 다른 글
[1년 후 마실가실] Custom Exception (0) | 2024.08.10 |
---|---|
[1년 후 마실가실] Test Code 작성 (0) | 2024.08.05 |
[1년 후 마실가실] REST API 구현 (0) | 2024.08.04 |
[1년 후 마실가실] 환경 설정(로컬 DB 연결 및 JPA 설정) (0) | 2024.07.27 |
[1년 후 마실가실] ERD 수정 (2) | 2024.07.27 |