Quelle est la différence entre les annotations @Column
et @Basic
dans JPA? Peuvent-ils être utilisés ensemble? Devraient- ils être utilisés ensemble? Ou est-ce que l'un d'eux suffit?
la source
Quelle est la différence entre les annotations @Column
et @Basic
dans JPA? Peuvent-ils être utilisés ensemble? Devraient- ils être utilisés ensemble? Ou est-ce que l'un d'eux suffit?
@Basic
signifie qu'un attribut doit être conservé et qu'un mappage standard doit être utilisé. Il a des paramètres qui vous permettent de spécifier si l'attribut doit être chargé paresseusement et s'il est nullable.
@Column
vous permet de spécifier le nom de la colonne de la base de données dans laquelle l'attribut doit être conservé.
Si vous spécifiez l'un sans l'autre, vous obtenez un comportement par défaut, ce qui est raisonnable, de sorte que les gens n'en utilisent généralement qu'un, à l'exception de cas spéciaux.
Donc, si nous voulions un chargement paresseux d'un attribut et spécifier un nom de colonne, nous pouvons dire
@Basic(fetch=FetchType.LAZY)
@Column(name="WIBBLE")
Si nous avons besoin du comportement par défaut, non paresseux, alors juste le @Column
aurait été suffisant.
@Basic
sans@Column
, c'est pourquoi les propriétésoptional
etnullable
existent dans les deux. Ai-je raison?En plus de la réponse de @ djna , il convient de noter qu'il
@Basic
faut comparer avec@OneToMany
,@ManyToOne
et@ManyToMany
. Un seul de ces éléments peut être spécifié sur une propriété.@Column
et@JoinColumn
peut être spécifié avec l'un de ceux-ci pour décrire les propriétés de la colonne de base de données.Il s'agit de deux ensembles d'annotations qui peuvent être utilisés ensemble, mais une seule annotation de chaque ensemble peut être utilisée à la fois.
la source
Il est à noter que Basic est conçu pour les champs primitifs
http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes
la source
L'annotation @Basic est appliquée aux entités JPA, et les de @Column sont appliqués aux colonnes de la base de données L'attribut facultatif de l'annotation @Basic définit si le champ d'entité peut être nul ou non; d'autre part,
la source