sopt-makers / sopt.org-backend-spring

Sopt 공식홈페이지 서버 - Spring Boot
MIT License
0 stars 0 forks source link

Entity Class Table & Column Name 이 따옴표(ex. "\"TableName\"", "\"columnName\"")로 묶여있는 건에 대하여 #1

Open Lim-Changi opened 6 months ago

Lim-Changi commented 6 months ago
softmoca commented 3 days ago

좋은 이슈 남겨 주셔서 감사합니다 ! 흠.. Nest서버 코드에는 따옴표 같은 전처리를 확인하지 못했는데 혹시 Nest 코드쪽에도 따옴표와 같은 전처리를 해두신게 있을까요 ?!

softmoca commented 2 days ago

JPA 기능 중 해당 이슈 해결해 줄만한 기능이 있을꺼 같긴한데..흠 제가 project 모듈 관련 API 마이그레이션 진행하며 하나씩 직접 테스트해보고 정리하고 다시 연락드리겠습니다 !!

첫번쨰 방법으로, 아래의 현재 hibernate 설정에 옵션 수정 및 추가.

spring:
  jpa:
    hibernate:
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring:
  jpa:
    hibernate:
      naming:
        physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
        implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy

위와 같은 옵션을 추가해보기

두 번째 방법으로, JPA에서 테이블 및 컬럼 이름 매핑 JPA에서는 @Table 및 @Column 어노테이션을 사용해 PostgreSQL에 맞는 이름을 명시적으로 매핑가능. 이렇게 하면 엔티티 클래스의 필드가 카멜케이스여도, 실제 데이터베이스에서는 소문자로 자동 매핑. 즉, 코딩은 가독성이 좋은 카멜케이스로 진행하되, DB에는 소문자로 테이블과 컬럼들이 전달됨.

@Entity
@Table(name = "my_table")  // 소문자로 명시적으로 매핑
public class MyEntity {

    @Column(name = "my_column")  // 소문자로 명시적으로 매핑
    private String myColumn;
}