J'ai un attribut de nom de doute est là dans les deux
@Entity et @Table
par exemple, je suis autorisé à avoir la même valeur pour l'attribut name
@Entity(name = "someThing")
@Table(name = "someThing")
et je peux avoir des noms différents aussi bien pour la même classe
@Entity(name = "someThing")
@Table(name = "otherThing")
quelqu'un peut-il me dire quelle est la différence entre ces deux et pourquoi nous avons le même attribut dans les deux?
@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
Ainsi, dans le premier cas, votre table et votre entité auront le même nom, ce qui vous permettra d'accéder à votre table avec le même nom que l'entité lors de l'écriture de HQL ou de JPQL.
Et dans le second cas, lors de l'écriture des requêtes, vous devez utiliser le nom indiqué dans @ Entity et le nom indiqué dans @ Table sera utilisé pour nommer la table dans la base de données.
Ainsi, dans HQL, votre someThing fera référence à otherThing dans la base de données.
@Entity(name = "someThing")
=> ce nom sera utilisé pour identifier le domaine .. ce nom ne sera identifié que par hql
requêtes ..ie ..nom de l'objet de domaine
@Table(name = "someThing")
=> ce nom sera utilisé dans quelle table référencée par l'objet de domaine..ie ..nom de la table
@Entity
est utile avec les classes de modèle pour indiquer qu'il s'agit de l'entité ou de la table
@Table
est utilisé pour donner un nom spécifique à votre table si vous voulez donner un autre nom
Remarque: si vous n'utilisez pas @Table
alors hiberner considérons que @Entity
est le nom de votre table par défaut et @Entity
doit
@Entity
@Table(name = "emp")
public class Employee implements Java.io.Serializable
{
}
L'attribut @ nom de la table est le nom réel de la table. Le nom de @Entitiy est utile si vous avez deux classes @Entity portant le même nom et que vous avez besoin d'un moyen de les différencier lors de l'exécution de requêtes.