인프런 커뮤니티 질문&답변

신동훈님의 프로필 이미지

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

객체와 테이블 매핑

@Entity의 name 속성에 대해

작성

·

475

2

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://docs.google.com/document/d/1j0jcJ9EoXMGzwAA2H0b9TOvRtpwlxI5Dtn3sRtuXQas/edit#heading=h.w2tomwsznga7)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://docs.google.com/document/d/1xCQKit-1V6l6ObeCe49St33RHPzLF_P_c3o7aSDTKs0/edit#heading=h.7dhnp46ven0v)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
@Entity의 name 속성과 @Table의 name 속성에 대해서 질문이 있습니다. @entity의 name 속성은 JPA에서 사용할 엔티티 이름이고, @Table 의 name 속성은 엔티티와 매핑할 테이블 명을 지정해준다고 하는데, @Entity의 name 속성에 대한 이해가 좀 부족한거 같습니다.. @Entity 의 name 속성과 @Table 의 name 속성을 다르게 했을 때 데이터베이스의 table명은 @Table의 name 속성에서 지정한대로 설정되는데, 혹시 이렇게 다르게 설정하면 문제가 생기는 것인지요.. JPA에서 사용한다는건 정확히 무슨 의미인지 잘 모르겠습니다..
 

답변 1

2

안녕하세요. 신동훈님, 공식 서포터즈 OMG입니다.

@Entity api에는 다음과 같은 설명이 있습니다.

중간에서부터 보면," 쿼리에서 엔티티의 이름을 참조하기 위해 사용이 되며 jpql에서 예약어가 아니어야 한다"

올라온 연관강의를 보니 아직 강의 초반부이신 것 같습니다. 강의 후반부에 JPQL에 대해서 학습하는데 JPQL에서의 엔티티이름을 엔티티의 기본이름이 아닌 지정한 이름으로 사용하고자 할 때 사용합니다.

제 경험 상 @Table의 경우는 종종 name을 지정하여 사용하는 것들은 보았지만(테이블의 이름이 특정 DB의 키워드로 되어 있어서 기본으로 만들어주는 테이블의 이름을 사용하면 오류가 발생하는 경우 혹은 그러한 상황에 미리 대처하기 위해 바꾸는 경우) @Entity의 이름을 특별히 지정하지 않고 기본으로 생성해준 이름을 사용한 것들만 보았습니다.

바꾸어 사용할 이유가 없다면 기본으로 생성되는 Entity의 이름을 사용하실 것을 권장드립니다.

감사합니다.