Amigos,
Primeira dificuldade no casamento entre JPA e Oracle.
Quando você cria uma classe no seu projeto, você mapeia toda a estrutura 
de dados na classe. Ao ser iniciado o sistema cria automaticamente a 
tabela no banco de desenvolvimento. No momento em quem estamos prontos 
para validar mais seriamente o sistema, simplismente geramos o script de 
criação das tabelas no próprio banco e passamos para o dba que validará 
tudo e criará o schema no banco de teste/treinamento para as fases 
finais do projeto (correções, otimizações etc.).
O problema é que quando você não define os tamanhos dos campos eles são 
criados com o tamanho que corresponde ao defualt para aquele atributo na 
classe. Assim os campos numéricos são criado como number(38) e strings 
como varchar(255). Você pode definir length, precision e scale através 
das anotações na classe Java. Mas para pk e fk isso não funciona, semrpe 
terão este tamanho. Aí você tem que ajeitar o script não mão antes de 
mandá-lo para o dba. Isso quebra um bocado daquele automatismo que falei 
antes.
Também testei o inverso, criar o esquema e depois usar o Java 
Persistence para criara a classe, na esperança de que ele criasse a 
classe com todas a anotações necessárias. Mas, ele só preenche o básico.
Meu intuito foi passar minhas dificuldades, nem tanto na esperança de 
achar melhores soluções, mas de "abrir terreno" para quem venha a 
defrontar com isso. Apesar do JPA já não ser a coisa mais nova que tem, 
ele ainda não é utilizado por muita gente, a despeito dos grandes 
benefícios que gera.
um abraço
Roberto

Responder a