본문 바로가기
Spring Framework/JPA

스프링부트 JPA @Entity @Table 차이점 정리

by wakestand 2021. 11. 24.
반응형

스프링부트 JPA 에서 Entity에 해당하는 파일에

@Entity

@Table

 

어노테이션을 사용할 수 있는데

일단 @Entity는 필수로 들어가야 하고

 

@Entity만 사용했을 경우 DB와 연결 시

테이블명은 클래스명과 동일하게 설정된다

 

즉 @Entity 어노테이션을 사용한 상태에서

클래스명이 CrudEntity일 경우

DB에서 CrudEntity 테이블로 연결된다는 거다

 

@Entity(name = "엔티티명")

으로 테이블명을 지정해 줄 경우에는

이후 EntityManager 등을 이용해 쿼리를 사용할 경우

 

createQuery("select .. from 엔티티명")

이렇게 사용할 수 있게 된다

 

반면 @Table의 경우에는

외부에서 호출하는 용도가 아닌

실제 DB에 붙을 테이블명 어노테이션을 말하는데

@Entity와 조합을 해서 사용해보면

 

위 이미지와 같이

@Entity

@Table(name = "테이블명")

이렇게 지정을 해 놓을 경우

 

createQuery(select m from 엔티티클래스명)

으로 호출을 해 주면

호출은 엔티티클래스명으로 하지만

실제 DB에는 테이블명의 테이블로 붙게 된다

반응형

댓글