Estou lendo o livro Enterprise JavaBeans 3. No capítulo 6 tive dúvidas entre essas 2 anotações: @SequenceGenerator e @TableGenerator. Qual a diferença entre elas ??? Como é que cada uma realiza a geração da chave primária ??? :roll:
SCBCD 5 - Dúvida Mapeando Objetos Persistentes
1 Resposta
victor,
Quando você está utilizando um banco de dados que possua recursos de Sequence, você pode utilizar a anotação @SequenceGenerator pode para definir por exemplo o valor inicial da sequence e também para identificar/uitilizar uma sequence pré-definida em um modelo de dados existente. Não se esqueça de anotar @GeneratedValue(strategy=SEQUENCE) para utilizar uma sequence.
O @TableGenerator é utilizado quando você utiliza uma tabela de pk´s. Com esta anotação você pode definir por exemplo o valor inicial da pk, qual é a tabela e as informações de constraint da mesma. Também não se esqueça de anotar @GeneratedValue(strategy=TABLE) para utilizar esta estratégia.
para maiores detalhes veja:
http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink-jpa-annotations.html