[TIL] 2025-02-19_JPA 이름 매핑전략

Yuri·2025년 2월 19일

TIL

목록 보기
51/59
post-thumbnail

📕 Today I Learned - 오늘 내가 공부한 것을 정리합니다.

개요

Java에서는 관례상 필드명으로 camelCase (예: deletedAt) 를 사용하고
Database에서는 컬럼명으로 언더_스코어 (예: deleted_at) 를 사용한다.

엔티티 클래스 작성 시 필드에 별도로 컬럼명을 명시해주지 않아도 Spring JPA에서 테이블이 생성될 때 자동으로 컬럼명이 언더 스코어 생성되는 것을 알게되었다. (spring.jpa.hibernate.ddl-auto)

@Column(name="deleted_at") // 이렇게 명시하지 않아도 된다!
private LocalDateTime deletedAt;

똑똑한 Spring JPA가 자동으로 만들어주겠지...만 내부적으로 어떤 동작이 이루어지는지 살짝 파보았다 🔎

학습내용

SpringBoot가 hibernate의 기본 인터페이스 구현을 덮어쓰고 SpringImplictNamingStrategy 와 SpringPhysicalNamingStrategy를 사용한다.

  • SpringBoot 의 디폴트
    spring.jpa.hibernate.naming.physical-strategy = SpringPhysicalNamingStrategy
    → 엔티티의 필드명을 파싱(parse)하여 테이블의 컬럼명을 언더스코어 형식으로 매핑한다.

  • 만약, 테이블의 컬럼명을 언더스코어 형식이 아닌 다른 형식으로 사용한다면

    • application.properties

      spring.jpa.hibernate.naming.physical-strategy 을 추가

      # 기본 변수 이름을 그대로 이용한다. 
      spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    • 전략 범위 2가지

      // camel case를 underscore 형태로 변경(Default)
      SpringPhysicalNamingStrategy
      
      // 변수 이름을 그대로 사용
      PhysicalNamingStrategyStandardImpl

🔗 참고
[JPA] 엔티티 매핑
JPA 이름 매핑 전략이란 무엇인걸까

profile
안녕하세요 :)

0개의 댓글