[Java 기본 원리] 패키지 네이밍 컨벤션 총정리

패키지와 데이터베이스, JPA(엔티티)의 네이밍 규칙은 프로젝트의 구조와 가독성을 결정짓는 중요한 요소다. 🔍



패키지 네이밍 규칙 💡

많은 파일을 폴더로 관리하는것 처럼 → 많은 클래스를 패키지로 관리

기본 구조

// 회사의 도메인(identity).프로젝트명.용도
com.company.project.controller // 회사의 도메인(identity): com.company
com.company.project.service // 프로젝트명: project
com.company.project.repository // 용도: repository
com.company.project.domain

// 실제 예시
com.samsung.shop.user
com.naver.search.api
    
// 계층별 구조화 시각화
com.company.project
    ├── controller    // API 엔드포인트
    ├── service      // 비즈니스 로직
    ├── repository   // 데이터 접근
    └── domain      // 엔티티 클래스



데이터베이스 네이밍 💡

테이블명 대문자 or 소문자 사용 => ORDER 또는 order

-- 대문자 사용
CREATE TABLE ORDER (
    ORDER_ID INT PRIMARY KEY,
    USER_ID INT
);

-- 소문자 사용
CREATE TABLE order (
    order_id INT PRIMARY KEY,
    user_id INT
);


컬럼명 스네이크 케이스 사용 => order_id
PK는 테이블명 포함, 일반 컬럼은 테이블명 제외하는 편

-- PK 컬럼: 테이블명_id 형식
CREATE TABLE member (
    member_id INT PRIMARY KEY,  -- PK는 테이블명 포함
    name VARCHAR(50),          -- 일반 컬럼은 테이블명 제외
    email VARCHAR(100)
);



JPA 엔티티 네이밍 💡

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

  • 엔티티명 파스칼 케이스 사용 => OrderItem
    • 스프링 부트는 엔티티명을 OrderItem -> ORDERITEM 처럼 “대문자”로 바꿔서 매핑
  • 필드명 카멜 케이스 사용 => orderId
    • 스프링 부트는 필드명을 orderId -> order_id 로 컬럼명 찾아서 매핑
    • 참고: order_id 는 스네이크 케이스
  • 스프링에서 테이블 매핑 마지막에 전부 “대문자”
    • 실제로 스프링 부트로 DB 테이블 자동 생성시 “대문자” 이름 확인


매핑 예시

@Entity
@Table(name = "ORDER_ITEM")  // DB 테이블명은 대문자
public class OrderItem {     // 클래스명은 파스칼 케이스
    @Id
    @Column(name = "order_id")  // DB 컬럼명은 스네이크 케이스
    private Long orderId;        // 필드명은 카멜 케이스
}

댓글남기기