[java] @Entity 및 @Table의 이름 속성

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

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

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

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

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

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



답변

@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에.


답변

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

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


답변

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

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

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

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

}


답변

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


답변