Qual é a diferença entre @Column
e @Basic
anotações na JPA? Eles podem ser usados juntos? Eles devem ser usados juntos? Ou um deles é suficiente?
fonte
Qual é a diferença entre @Column
e @Basic
anotações na JPA? Eles podem ser usados juntos? Eles devem ser usados juntos? Ou um deles é suficiente?
@Basic
significa que um atributo deve ser persistido e um mapeamento padrão deve ser usado. Possui parâmetros que permitem especificar se o atributo deve ser carregado lentamente e se é anulável.
@Column
permite especificar o nome da coluna no banco de dados no qual o atributo deve ser persistido.
Se você especificar um sem o outro, obterá um comportamento padrão que é sensato; portanto, geralmente as pessoas usam apenas um, com exceção de casos especiais.
Portanto, se quisermos um carregamento lento de um atributo e especificar um nome de coluna, podemos dizer
@Basic(fetch=FetchType.LAZY)
@Column(name="WIBBLE")
Se tivéssemos o comportamento padrão não preguiçoso, apenas o @Column
teria sido suficiente.
@Basic
sem@Column
, e é por isso que as propriedadesoptional
enullable
existem em ambos. Estou certo?Além da resposta de @ djna , vale a pena notar que
@Basic
deve ser comparado com@OneToMany
,@ManyToOne
e@ManyToMany
. Apenas um deles pode ser especificado em qualquer propriedade.@Column
e@JoinColumn
pode ser especificado junto com qualquer um deles para descrever as propriedades da coluna do banco de dados.Esses são dois conjuntos de anotações que podem ser usados juntos, mas apenas uma anotação de cada conjunto pode ser usada por vez.
fonte
Vale ressaltar que o Basic foi desenvolvido para campos primitivos
http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes
fonte
A anotação @Basic é aplicada às entidades JPA e a @Column é aplicada às colunas do banco de dados O atributo opcional da anotação @Basic define se o campo da entidade pode ser nulo ou não; por outro lado,
fonte