name 属性が @Entity と @Table の両方にあるため、疑問があります
たとえば、 name 属性に同じ値を指定できます
@Entity(name = "someThing")
@Table(name = "someThing")
同じクラスに別の名前を付けることもできます
@Entity(name = "someThing")
@Table(name = "otherThing")
これら2つの違いは何ですか?なぜ両方に同じ属性があるのですか?
name 属性が @Entity と @Table の両方にあるため、疑問があります
たとえば、 name 属性に同じ値を指定できます
@Entity(name = "someThing")
@Table(name = "someThing")
同じクラスに別の名前を付けることもできます
@Entity(name = "someThing")
@Table(name = "otherThing")
これら2つの違いは何ですか?なぜ両方に同じ属性があるのですか?
@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 を記述しているときに、エンティティと同じ名前でテーブルにアクセスできます。
2 番目のケースでは、クエリを作成する際に@Entityで指定された名前を使用する必要があり、 @ Tableで指定された名前は DB 内のテーブルに名前を付けるために使用されます。
したがって、HQL では、someThingは DB 内のotherThingを参照します。
@Entity
モデルクラスで、これがエンティティまたはテーブルであることを示すのに役立ちます
@Table
別の名前を付けたい場合は、テーブルに特定の名前を付けるために使用されます
@Table
注:休止状態を使用しない場合@Entity
は、デフォルトでそれがテーブル名であると見なされ@Entity
ます。
@Entity
@Table(name = "emp")
public class Employee implements java.io.Serializable
{
}
@Table の name 属性は、実際のテーブル名です。@Entity の名前は、同じ名前の @Entity クラスが 2 つあり、クエリを実行するときにそれらを区別する方法が必要な場合に便利です。