@Entity 및 @Table의 이름 속성


82

@Entity와 @Table에 이름 속성이 있기 때문에 의심이 있습니다.

예를 들어, 이름 속성에 대해 동일한 값을 가질 수 있습니다.

@Entity(name = "someThing")
@Table(name = "someThing")

같은 클래스에 대해 다른 이름도 가질 수 있습니다.

 @Entity(name = "someThing")
 @Table(name = "otherThing")

누구든지이 둘의 차이점과 우리가 둘 다에 동일한 속성을 갖는 이유를 말해 줄 수 있습니까?


@Entity는 이제 더 이상 사용되지 않습니다.
Philip Rego

8
@PhilipRego : Hibernate의 \ @Entity (예 : org.hibernate.annotations.Entity)는 더 이상 사용되지 않지만 JPA의 \ @Entity (예 : javax.persistence.Entity)는 살아 있고 좋습니다.
David Siegal 2017-10-24

답변:


102
@Entity(name = "someThing") => this name will be used to name the Entity
@Table(name = "someThing")  => this name will be used to name a table in DB

따라서 첫 번째 경우 테이블과 엔티티는 동일한 이름을 가지므로 HQL 또는 JPQL을 작성하는 동안 엔티티와 동일한 이름으로 테이블에 액세스 할 수 있습니다.

두 번째 경우에는 쿼리를 작성하는 동안 @Entity에 지정된 이름을 사용해야하며 @Table에 지정된 이름이 DB의 테이블 이름에 사용됩니다.

그래서 HQL에서 뭔가 를 참조합니다 otherThing DB에.


18

@Entity(name = "someThing")=>이 이름은 도메인을 식별하는 데 사용됩니다 ..이 이름은 hql도메인 개체의 ..ie ..name 쿼리로만 식별됩니다.

@Table(name = "someThing") =>이 이름은 도메인 개체가 참조하는 테이블에 사용됩니다.


15

@Entity 이것이 엔티티 또는 테이블임을 나타내는 모델 클래스와 함께 유용합니다.

@Table 다른 이름을 제공하려는 경우 테이블에 특정 이름을 제공하는 데 사용됩니다.

참고 : 사용하지 않는 경우 @Table다음 최대 절전 것을 고려 @Entity기본 및하여 테이블 이름입니다 @Entity해야

@Entity    
@Table(name = "emp")     
public class Employee implements java.io.Serializable    
{

}

2

@Table의 이름 속성은 실제 테이블 이름입니다. @Entitiy의 이름은 동일한 이름을 가진 두 개의 @Entity 클래스가 있고 쿼리를 실행할 때 구분할 방법이 필요한 경우 유용합니다.


1
이름이 같은 두 개의 엔티티가있는 경우는 언제입니까? 클래스 이름이 같지만 클래스가 다른 패키지에있는 경우입니까 (정규화 된 이름이 다릅니다)?
croraf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.