Respostas:
@Basicsignifica 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 @Columnteria sido suficiente.
Além da resposta de @ djna , vale a pena notar que @Basicdeve ser comparado com @OneToMany, @ManyToOnee @ManyToMany. Apenas um deles pode ser especificado em qualquer propriedade.
@Columne @JoinColumnpode 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.
Vale ressaltar que o Basic foi desenvolvido para campos primitivos
http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes
Um atributo básico é aquele em que a classe de atributo é um tipo simples, como String, Número, Data ou primitivo. O valor de um atributo básico pode ser mapeado diretamente para o valor da coluna no banco de dados.
Os tipos e conversões suportados dependem da implementação da JPA e da plataforma de banco de dados. Qualquer atributo básico que use um tipo que não mapeie diretamente para um tipo de banco de dados pode ser serializado para um tipo de banco de dados binário.
A maneira mais fácil de mapear um atributo básico na JPA é não fazer nada. Quaisquer atributos que não tenham outras anotações e não façam referência a outras entidades serão mapeados automaticamente como básicos e até serializados, se não um tipo básico. O nome da coluna para o atributo será padronizado, com o mesmo nome do atributo, em maiúsculas.
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,
@Basicsem@Column, e é por isso que as propriedadesoptionalenullableexistem em ambos. Estou certo?