취업 준비, 프로젝트 리팩토링(2)
리팩토링 순서
1. 테이블 재정의 → 테이블 정의서 새로 만들기[20230727 테이블 정의서 완료]2. erd 재정의 → 기존 erd 수정하기[20230728 erd 수정 완료]3. jar로 배포 → 기존 jsp 사용으로 인해 war로 설정했던 부분을 jar로 변경[20230730 프로젝트 생성 완료]4. 패키지 구조 변경 → 정리되어있지 않은 기존의 패키지 구조(특히 repository부분)를 변경[20230730 구조 변경 완료]
5. 템플릿 엔진 thymeleaf로 바꾸기 → 기존의 jsp의 흔적 없애기, 불필요한 페이지나 버튼 제거 [20230731~ 진행중]
6. 재정의된 테이블 구조에 맞는 프로젝트로 코딩 [20230731~ 진행중]
7. mybatis를 jpa로 변경(아직 공부가 안된 부분이 있어서 가장 마지막에 변경예정)
현재 리팩토링 진행상태 (5번, 6번 함께 진행중)
회원가입, 로그인, 로그아웃 구현 완료
builder 패턴
[builder 패턴 참고 사이트]
https://johngrib.github.io/wiki/pattern/builder/
1. 오버로딩으로 생성자를 여러개 만들어 entity값을 초기화 하는방법
[단점]
매개 값이 추가되면 여러개의 생성자 코드를 다시 수정해야한다.
코드 가독성이 떨어진다.(호출 코드만으로는 의미를 알기 어려움)
2. 자바 빈 패턴 (setter, getter 메소드 사용)
[단점]
entity들의 값을 한번의 호출로 넣을 수 없다.(여러번 호출)
setter 메소드의 존재로 인해 변경 불가능 클래스를 만들 수 없다.
3. 빌더 패턴
[장점]
롬복의 @Builder 어노테이션을 이용하면 매개값 추가시 여러 코드를 수정해줄 필요 없이 변수만 새로 선언해주면 된다.
각 인자의 이름이 메소드 이름이므로 메소드 명만 보고 인자의 의미를 알 수 있다.
객체를 생성하며 메소드 체이닝으로 한번에 필요한 값의 초기화를 할 수 있다.
⭐setter 메소드가 없으므로 변경 불가능 객체를 만들 수 있다.
constructor 어노테이션 종류
@NoArgsConstructor
기본 생성자를 생성해주는 어노테이션 → 초기값이 필요한 final 변수가 있을경우 null, 0 등 기본값으로 초기화 된다.
@RequiredArgsConstructor
final 변수, Notnull 표시가 된 변수처럼 필수적인 정보를 세팅하는 생성자를 만들어주는 어노테이션
@AllArgsConstructor
전체 변수를 생성하는 생성자를 만들어주는 어노테이션
[타임리프 참고 사이트]