•
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)
•
controller
•
service
▪
user
•
controller
•
service
•
repository
•
entity
•
dto
•
exception
▪
product
▪
등등..
◦
global