Boa noite, pessoal. Estou começando os estudos no hibernate.
Minhas tabelas:
Tabela proprietarios:
nome varchar(20);
cpf varchar(20); - primary key
Tabela carros:
idCarro varchar(20) - primary key
cpf varchar(20) - references proprietarios (cpf) - FK para fazer join com o proprietario
modelo varchar (20)
Dúvida1:
Eu não ia colocar uma chave primaria em carros, apenas uma chave estrangeira, para que pudesse fazer join com usuarios. Mas nao consegui mapear sem o idCarro. Toda tabela vai necessitar de uma chave primária?
Dúvida2:
Quando criei um usuario e dois carros, passo o objeto usuario para os objetos carros. Os objetos usuarios tem um hashset, com o conjunto de carros. Se eu der um save no usuario, os objetos carros sao salvos na tabela carros?
Exemplo:
// crio e gravo o usuario no banco
crio proprietario1;
session.save(proprietario1)
//crio dois carros
crio carro1 (passando como parametro idCarro1, proprietario1, modelo1)
crio carro2 (passando como parametro idCarro2, proprietario1, modelo2)
// coloco os carros na lista de carros que o usuario tem. Pensei que dando um "save" no usuario, os carros tb seriam gravados, na tabela de carros (mas isso nao acontece)
proprietario1.getHashSetCarros().add(carro1)
proprietario1.getHashSetCarros().add(carro2)
//aqui sim, os carros sao gravados na tabela.
session.save(carro1)
session.save(carro2)
Duvida3:
Eu sei fazer uma query simples, por exemplo, um select * from carros. e pegar todos os carros. Mas como faço algo do tipo:
select proprietarios.cpf, carros.modelo
from proprietarios, carros
where proprietario.cpf = carros.cpf;
Na verdade, seria pegar todos os proprietários que existem e seus respectivos carros. o Relacoinamento é 1xN, pois um proprietario pode ter vários carros e vários carros podem pertencer a uma mesmo proprietario.
Acho que as dúvidas sao bem simples, mas se for necessario enviar o codigo fonte, posso passar num arquivo zip. na verdade, acho que depois que resolver essa, vou ter mais algumas, mas com o tempo, envio por aqui. Li alguns tutoriais, mas sempre surgem algumas duvidas, como a Dúvida2… Desde já, obrigado!