카멜케이스와 스네이크케이스 언제 사용할까?

2026. 1. 8. 00:19·Java

카멜케이스(camelCase) vs 스네이크케이스(snake_case)

스프링 부트에서 @Entity 클래스에서 @Column(name="emp_id")를 사용하는 이유?

@Entity
public class Emp {
    private Integer emp_id;
}

위와 같은 코드는 insert시 입력한 값 대신 null이 들어갑니다.
그 이유를 알아보자.

 

데이터베이스는 컬럼명의 소문자와 대문자를 구별하지 않는다.
그래서 첫글자를첫 글자를 소문자, 그 뒤 단어의 첫 글자를 대문자로 표기하는
카멜 표기법(camelCase) 대신 언더바를 중간에 넣는 스네이크케이스(snake_Case)를 사용한다.

ORM 매핑 방식 1번째)

@Entity
public class Emp {
    @Column(name = "emp_id")
    private Integer empId;  
}

 

하지만 자바는 변수 작명시 카멜표기법을 사용하는 것이 "관례"입니다.

그리고 JPA는 기본적으로 클래스 변수명을 그대로 DB 컬럼명과 매핑하기에
별도의 지정을 하지 않는 한 자동으로 카멜케이스를 스네이크 케이스의 DB컬럼과 매핑하지 못합니다.

@Column으로 name 속성에 스네이크 케이스로 된 DB컬럼명을 적으면
클래스 변수명을 스네이크 케이스로 변환해서 DB컬럼과 매핑시켜 줍니다.

 

그 별도의 지정은 아래와 같습니다.


yml에 Naming Strategy를 수정하면
카멜케이스를 자동으로 스네이크 케이스의 DB컬럼과 매핑시켜 줍니다.

ORM 매핑 방식 2번째)

yml로 카멜 케이스 -> 스네이크 케이스 변환 자동화 하기

spring:
  jpa:
    hibernate:
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

 

위와 같이 설정하면 @Column(name="emp_id") 없이도 자동으로 스네이크 케이스로 변환하여
DB컬럼과 매핑해 줍니다.

@Entity
public class Emp {
    private Integer empId; //@Column(name="emp_id") 없이도 매핑해줌
}

 

 

그래서 소형 프로젝트는 @Column으로 관리.

대규모 프로젝트에는 Naming Strategy로 자동화,
필요한 곳에만 @Column을 붙여서 사용하면 좋은 것 같다.

 

'Java' 카테고리의 다른 글

엔티티에서 @Builder 사용할 때 불변성에 대한 고찰  (0) 2026.01.31
[Spring Boot] Entity <-> DTO 변환 방법 4가지, Setter부터 @Builder, static Factory 메서드 패턴, 상속까지  (0) 2026.01.23
Spring Boot 버전 2 부터 자동화된 필터 기능들  (0) 2025.12.31
[Java] 날짜 타입(LocalDate, Date) 다루기, Servlet, Spring, Spring Boot  (0) 2025.09.01
백준 1931번 회의실 지정,Java 풀이  (4) 2025.07.11
'Java' 카테고리의 다른 글
  • 엔티티에서 @Builder 사용할 때 불변성에 대한 고찰
  • [Spring Boot] Entity <-> DTO 변환 방법 4가지, Setter부터 @Builder, static Factory 메서드 패턴, 상속까지
  • Spring Boot 버전 2 부터 자동화된 필터 기능들
  • [Java] 날짜 타입(LocalDate, Date) 다루기, Servlet, Spring, Spring Boot
MvA
MvA
백엔드 개발자 김재현입니다. 주로 공부하면서 느낀점을 기록합니다.
  • MvA
    Man vs Ai
    MvA
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Java (6)
      • Python (8)
        • 딥러닝 (1)
        • 머신러닝 (7)
      • JavaScript (2)
      • 내배캠 (60)
      • 개인 프로젝트 (11)
      • 책 후기 (5)
      • 기타 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    딥러닝
    머신러닝
    Riot API
    아키텍처
    내일배움캠프
    TiL
    배포
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
MvA
카멜케이스와 스네이크케이스 언제 사용할까?
상단으로

티스토리툴바