개발 흐름과 네이밍 팁

자바 프로젝트 개발에서 효율적인 개발 흐름과 일관된 네이밍 컨벤션을 적용하는 방법을 설명하는 가이드입니다.



개발흐름

참고: 깃, 구글 자바 컨벤션과 기능개발 흐름

개발과정

  • 요구사항 분석(대략적 기능)
  • 기능 목록(상세한 기능)
  • 도메인 설계
    • 도메인 모델 분석(간략히)
    • 테이블 설계(DB) + 엔티티 설계(JPA)
    • ERDCloud 툴을 사용한 설계 => 테이블, 엔티티 설계를 여기서 한번에
  • 기능 구현 -> TDD 기법 활용 권장
    • 도메인 구현 -> 엔티티를 의미하며, 모든 계층에서 사용
    • 레퍼지토리 구현 -> DB와 상호작용
    • 서비스 구현 -> 비지니스 로직 & 트랜잭션
      • 도메인 모델 패턴 : 서비스 계층은 단순히 엔티티에 필요한 요청을 위임하는 방식
        • 참고로 본인은 도메인 모델 패턴 방식을 주로 사용 -> JPA 와 잘 맞음
      • 트랜잭션 스크립트 패턴 : 엔티티에는 비지니스 로직이 거의 없고 서비스 계층이 담당하는 방식
        • MyBatis와 잘 맞겠다고 생각
    • 컨트롤러 구현 -> 웹 계층과 상호작용 (+API 포함)



네이밍 방식

Database

  • 테이블명 형식으로 ORDER 또는 order 사용 => 대문자 or 소문자
  • 컬럼명 형식으로 order_id 사용 => 스네이크 케이스
    • 보통 PK인 컬럼명을 테이블명_id 형태로 쓰지만, 나머지 컬럼명들은 테이블명 을 안붙이는 편 (ex:member_id, name)


JPA -> ORM(객체 관계 매핑)

  • 엔티티명 형식으로 OrderItem 사용 => 파스칼 케이스
    • 스프링 부트 JPA는 엔티티명을 OrderItem -> ORDERITEM 처럼 “대문자”로 바꿔서 매핑
  • 필드명 형식으로 orderId 사용 => 카멜 케이스
    • 스프링 부트 JPA는 필드명을 orderId -> order_id 로 컬럼명 찾아서 매핑
  • JPA는 테이블 자동 생성 시 “대문자”로 자동 변경
    • 실제로 스프링 부트의 JPA로 DB(H2) 테이블 자동 생성시 “대문자” 이름 확인

댓글남기기