-
Entity
- @Setter 사용 금지
- 생성자대신 @Builder쓰기
- table명은 TB_도메인명
-
Dto
- 1api 당 1 dto(메서드 별로 구분)
- request, response 로 패키지 나누기
- 클래스명은 Req,Res로 구분
- record 사용해보기
-
Service
- Servcie를 주입받아서 사용하지않고 Repository 주입받아서 사용
- ServiceImpl? - 사용이유가 아직 와닿지가 않아서 보류
- class에 @Transactional을 걸고 get을 할때는 @Transactional(readOnly = true)사용
-
global
- GoogleStyle적용
- .yml파일 쓰기 + 환경변수적용하기
-
네이밍 명명법
- 주요 공통함수 (CRUD관련)함수명은 기능 + 도메인 + (List)
- 기능 (Create Update Delete Get) + 도메인(Product,User, etc…) + (여러개조회면 List) + (뒤에 내용이 더 붙는건 자유)
- 변수나 메서드는 CamelCase로
- 클래스명은 PascalCase로
- repository 에서 findById()하는 메서드는 find + Domain이름 형태로 명명해준다.
- 예) findUser(userId) , findProduct(productId)
-
exception
- 에러코드는 각 도메인에서 관리 (global에서 errorcode는 인터페이스로 선언)
- 에러코드 클래스 이름은 도메인 + ErrorCode
RuntimeException
상속받는 GlobalException선언 후 각 도메인에서 GlobalException 상속받는 예외 따로 만들어주기(에러코드에 맞는 메서드명으로 설정)
-
디렉토리구조
- domain
- admin (/api/v1/admin)
- user
- controller
- service
- repository
- entity
- dto
- exception
- product
- 등등..
- global