@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 클래스가 있고 쿼리를 실행할 때 구분할 방법이 필요한 경우 유용합니다.