[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; // 필드명은 카멜 케이스
}
댓글남기기