[Kotlin+Spring] JPA 네이밍 전략 (snake_case)

주형(Jureamer)·2023년 3월 30일
0

개요

Kotlin + Spring으로 처음으로 프로젝트 세팅을 해보고 있는데 여기저기서 에러가 많이 터졌다. 그 중에서도 Entity + JPA 설정하는 데 애를 많이 먹었다.

JAVA 진영에서는 ORM을 주로 JPA(인터페이스)와 Hibernate(구현체)로 구현한다.

주로 엔티티 컬럼에는 Camel Case로 작성하고 실제 DB에는 snake_case로 작성을 하게 되는데 일일이 지정을 해줘야하는 부분이 불편했는데 이를 개선하는 방법이 있어 소개해본다.

@JsonProperty, @JsonNaming

기존 방식대로 @JsonProperty를 사용하면 일일이 지정을 해줘야한다.

Entity

@Entity
class Url (

    @Column(nullable = false)
    @JsonProperty("long_url")
    var longUrl: String,


    @Column(nullable = false)
    @JsonProperty("short_url")
    var shortUrl: String,
    ...
)

결과

{"short_url": "https://abc.co/uD237cz", "long_url": "https://abcdefghizk.com/abcd123456"}

만약 공통적으로 적용시키고 싶은 Entity에서는 @JsonNaming을 사용한다면 한 번의 적용을 통해 깔끔히 해결할 수 있다.

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy::class)
@Entity
class Url (

    @Column(nullable = false)
    var longUrl: String,


    @Column(nullable = false)
    var shortUrl: String,
    ...
)

결과는 동일하게 나온다!!

참고로 기존에 사용됐던 PropertyNamingStrategy는 Jackson Module의 2.12버전부터 deprecated 되어서 PropertyNamingStrategies를 사용해야 한다. 참고

참고

profile
작게라도 꾸준히 성장하는게 목표입니다.

0개의 댓글