2025 FundingBoost Refactoring 회고록

2024.04.12

jpa의 기본 파일구조(충돌방지 & 기본적인 세팅)는 Controller → Service → repository(+dto)

정적 팩토리 메서드 → 가독성이 뛰어남, 인스턴스 생성과 제어가 용이하다(특히나 싱글톤 패턴이나 인스턴스 캐싱), 반환르로 하위 객체를 반환할 수 있다

ERD 단방향 접근 → 다(Many)에서 일(One)로의 접근은 가능하나, 일에서 다로의 접근은 불가능하다.

각 table로 query를 날리는 것 보단 join해서 query를 한 번만 날리는 것이 더 좋다.

Service를 작성시엔 각테이블의 개념적인 부분도 생각하여 엔티티로 가져오도록하자

2024.04.13

Class Optional: 자바에서 Null 참조시 NullPointExeption을 방지하는 클래스.

Jpa 메소드는 return값이 Optional(타입이 아닌 인자!)로 이루어져 있어 이를 풀어주는 것이 중요하다. orElse(),orElseThrow()가 있으며 후자는 null일 경우 NullPointException을 발생시킨다.

application.yml(property) → 프로젝트의 각종 설정을 하는 파일

2024.04.14

jpa spring bean 의존성 주입오류 => order table의 @Table 설정을 "order"로 해서 SQL 예약어와 명이 겹쳐서 오류가 났었다.

mypay 페이지에서 펀딩 종료된 것과 개인 구매에 대해 접근해야 하는 테이블이 달라서 논리적으로 문제가 생긴다 -> api를 두 개로 분리해서 service를 두개로 생성하고 controller딴에서 @pathvariable을 사용하여 나눠서 데이터를 넘기기로 함

H2 인메모리 모드: 데이터를 메모리에 저장하고 처리하는 모드, DB가 메모리내에서 동작하기 때문에 매우 빠른 속도로 작업 수행이 가능하다. (jdbc:h2:mem:~ 없으면 하나만 생성, localhost:8082/에서 확인 가능)

Jparepository는 자동으로 해당 컬럼에 대한 내용으로 찾아오는 메소드를 만들어 줄 수 있다. ex) findByIdOrName(~) 이런식으로 메서드 명을 입력하면 자동으로 내용을 만들어준다.

2024.04.15