• 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