tenho 2 tabelas que tem um relacionamento one-to-many,
logo, nas tabelas, a tabela do lado do many recebe uma FK da tabela ONE.
Na hora de criar as minhas classes,
devo criar como um "espelho do BD", por exemplo com um atributo "private Integer idDaOutraTabela",
ou devo criar um objeto?
Exemplificando.
Cidadao tem Cidade.
Vários cidadãos pertencem a mesma cidade.
public class Cidadao{
private Integer id;
private Integer idCidade;
}
ou
public class Cidadao{
private Integer id;
private Cidade cidade;
}
A segunda abordagem, sempre. Com ORM/Hibernate você para de pensar em relacionamentos com chaves e IDs e passa a pensar em relacionamento de objetos. Portanto o correto é ter um atributo Cidade dentro da sua classe Cidadão. O Hibernate cuidará de transformar esse relacionamento de objetos em IDs e chaves estrangeiras no banco de dados.
julianofischer
Obrigado Sérgio!
mais uma pergunta;
Estou usando o netbeans aqui, colocando os annotations nas minhas classes e tem um warning dizendo que eu ainda não tenho uma “unidade de persistência”, pode me dizer o que é isso?
Posso colocar todas as configurações de acesso ao banco de dados no HibernateUtil, certo?
mynameisflaw
O seu Netbeans deve estar achando que seu projeto é um projeto JPA, provavelmente por causa das anotacoes utilizadas do pacote javax.persistence.*. Por isso ele esta te cobrando uma Persistence Unit
As configuracoes de acesso a banco, sugiro mante-las em um arquivo de configuracoes a parte: hibernate.properties
abraços
julianofischer
Outra dúvida,
se eu tenho uma classe Carne e cada carne tem um número maior que zero de parcelas,
Qual das 2 abordagens está correta?
A do método salvar1 ou a do método salvar2?
Eu acredito que seja a do método salvar um, porém no meu projeto não funcionou, o que me levou a fazer essa pergunta!
Abraços
mynameisflaw
A abordagem um é a mais apropriada, porém seu mapeamento precisa de um aditivo para funcionar dessa maneira.
A sua coleção de parcelas não é persistida no primeiro caso porque o mapeamento está na outra ponta, e o mappedBy está Carne.
Então quando você salva o objeto Carne, a coleção de parcelas não sabe que o objeto Carne existe.
Faça o seguinte: