両方に名前属性があるのか疑問です
@Entityおよび@Table
たとえば、名前属性に同じ値を設定できます
@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(name = "someThing")
=>この名前は、ドメインを識別するために使用されます。この名前は、hql
クエリによってのみ識別されます。
@Table(name = "someThing")
=>この名前は、ドメインオブジェクトによって参照されるテーブルに使用されます。つまり、テーブルの..name
@Entity
は、これがエンティティまたはテーブルであることを示すためにモデルクラスで役立ちます
@Table
は、別の名前を指定する場合にテーブルに特定の名前を指定するために使用されます
注:@Table
を使用しない場合、休止状態はデフォルトで@Entity
がテーブル名であり、@Entity
は
@Entity
@Table(name = "emp")
public class Employee implements Java.io.Serializable
{
}
@Tableの名前属性は、実際のテーブル名です。 @Entitiyの名前は、同じ名前の@Entityクラスが2つあり、クエリの実行時にそれらを区別する方法が必要な場合に役立ちます。