Post

JPA 엔터티 클래스 SQL 테이블 매핑

JPA 엔터티 클래스 SQL 테이블 매핑

1. 기본 테이블 이름

JPA 기본 테이블 이름 생성은 구현에 따라 다르다.

예를 들어, Hibernate에서 기본 테이블 이름은 첫 글자가 대문자인 클래스 이름이다. 이는 ImplicitNamingStrategy 계약을 통해 결정된다.

그러나 PhysicalNamingStrategy 인터페이스를 구현 하여 이 동작을 변경할 수 있다.

2. @Table 사용

사용자 정의 SQL 테이블 이름을 설정하는 가장 쉬운 방법은 엔터티에 @jakarta.persistence.Table 주석을 달고 이름 매개변수를 정의하는 것이다.

1
2
3
4
5
@Entity
@Table(name = "ARTICLES")
public class Article {
    // ...
}

정적 최종 변수에 테이블 이름을 저장할 수도 있다.

1
2
3
4
5
6
@Entity
@Table(name = Article.TABLE_NAME)
public class Article {
    public static final String TABLE_NAME= "ARTICLES";
    // ...
}

3. JPQL 쿼리에서 테이블 덮어쓰기

기본적으로 JPQL 쿼리에서는 엔터티 클래스 이름을 사용한다.

1
select * from Article

하지만 @jakarta.persistence.Entity 주석에 name 매개변수를 정의하여 이를 변경할 수 있다.

1
@Entity(name = "MyArticle")

그런 다음 JPQL 쿼리를 다음과 같이 변경한다.

1
select * from MyArticle

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.