Quelle est la différence entre @Entity et @embeddable
La différence entre @entity et @embeddable annotation lorsque chacun est ajouté avant la déclaration de la classe?
- le premier créer la classe comme une entité, deuxième insérer une colonne d'une autre table?
- le premier créer la classe comme un tableau, tandis que la seconde est intégré dans une autre classe?
- la première établit la norme en tant que classe, deuxième définir le type de table
- le premier créer la table pour que la classe, la deuxième intégrer quelque chose dans une classe différente
- la première définir le tableau de propriété, deuxième créer de l'union de deux tables
OriginalL'auteur Sanjeev Yadav | 2014-01-15
Vous devez vous connecter pour publier un commentaire.
@Entity
annotation sur une classe définit, elle dispose d'une existence séparée. Ainsi, nous pouvons exécuter des requêtes DB, sans être dépendant d'aucune autre classe.@Embeddable
annotation sur une classe définit, il n'a pas d'existence indépendante. On ne peut donc pas exécuter les requêtes DB, sans dépendre des autres classe. Voici un exemple pour mieux comprendre:Vous pouvez voir ici sans avoir un
User
,UserDetails
est inutile.Généralement, en programmation orientée objet, nous avons d'abord concevoir les classes et ensuite, nous concevons des entités de base de données. Pour certaines classes (comme UserDetails classe dans l'exemple ci-dessus), nous ne voulons pas avoir des tables distinctes dans la bd, où l'indépendance de leur existence est dénuée de sens. Dans ces cas, nous marque à la classe embeddable.
Généralement, intégrable classes de partager la même table que l'Entité à laquelle ils sont intégrés
droit @aladin et n'oubliez pas l'important exemple de plusieurs-à-plusieurs avec une table de jointure qui a plus d'attributs que les deux FKs. C'est quand vous avez à faire cela mkyong.com/hibernate/...
OriginalL'auteur Sazzadur Rahaman
Entités ont une identité et peut être interrogé pour. Embeddables ont pas d'identité qui leur est propre et ne peut être interrogé à l'aide de la possession d'entités.
Si vous ouvrez une classe d'entité, vous trouverez toujours le
@Id
annotation - il est obligatoire. Si vous ouvrez une intégrable classe, vous ne trouverez jamais une@Id
annotation - il est interdit.EDIT: Il n'est pas tout à fait correct que embeddables ne peut être stocké en tant que partie de la société mère, c'est à dire dans la même table. Ce n'est vrai que pour un-à-un les relations. Vous pouvez avoir
Collections
etMaps
de intégrable objets dans l'entité mère et ils vont être mappé à une collection de tableaux.OriginalL'auteur kostja
Une classe d'entité est un utilisateur ordinaire défini Java de la classe dont les instances peuvent être stockées dans la base de données.
Intégrable classes sont définies par l'utilisateur permanent de classes qui fonctionnent comme des types de valeur. Comme avec d'autres non types d'entité, les instances d'une intégrable classe ne peut être stocké dans la base de données des objets incorporés, c'est à dire dans le cadre d'un contenant de l'entité objet.
OriginalL'auteur Martin
C'est un vieux sujet, mais je voudrais ajouter ma réponse, qui est plus de point de vue théorique. En DDD (domain driven design), nous avons habituellement
Entity
etValue Objects
. Les premiers ne sont identifiables que par unidentity
qu'ils ont. Les seconds ne sont pas définis par une identité, ce qui signifie que si tous les composants qui font que certains objets sont les mêmes, que les 2 objets de valeur sont les même.L'analogie est que dans ce cas, si on devait appliquer DDD, le
Entity
est la classe annotée avec@Entity
et laValue Object
est l'un avec de l'@Embeddable
. Une démonstration de ceci est le fait que le intégrable objet est ajouté comme addditional de l'information à un enregistrement existant, qui a déjàits own identity
défini de l'extérieur de l'objet incorporé.OriginalL'auteur NiVeR