Réponses:
@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.
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.
Il est à noter que Basic est conçu pour les champs primitifs
http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes
Un attribut de base est un attribut dans lequel la classe d'attribut est un type simple tel que String, Number, Date ou une primitive. La valeur d'un attribut de base peut correspondre directement à la valeur de la colonne dans la base de données.
Les types et conversions pris en charge dépendent de l'implémentation JPA et de la plate-forme de base de données. Tout attribut de base utilisant un type qui ne correspond pas directement à un type de base de données peut être sérialisé en un type de base de données binaire.
Le moyen le plus simple de mapper un attribut de base dans JPA est de ne rien faire. Tous les attributs qui n'ont pas d'autres annotations et ne référencent pas d'autres entités seront automatiquement mappés comme de base, et même sérialisés si ce n'est un type de base. Le nom de la colonne de l'attribut sera par défaut, nommé de la même manière que le nom de l'attribut, en majuscules.
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,
@Basic
sans@Column
, c'est pourquoi les propriétésoptional
etnullable
existent dans les deux. Ai-je raison?