Inserir uma lista de Objetos

Olá pessoal , estou retomando os estudos com java depois de 1 ano parado =/ , e estou criando aqui um gerenciador para oficina nada comercial ou acadêmico , to tentando relembrar regra de negócio, CRUD básico e tal para poder ir avançando…
minha dúvida chega a ser ridícula mais lá vai.

tenho as entidades Cliente e Veiculo onde um Veiculo tem um Cliente e um Cliente tem uma Lista de Veiculos , o pessoal aqui já me ajudou com a modelagem do banco , mas agora não estou conseguindo implementar o DAO -.-’ , como devo fazer pra inserir uma lista de Veiculo no Cliente.

Primeiro, coloque as suas entidades aqui para sabermos como está mapeado.

Provavelmente você mapeou o cliente dentro de um veículo, então algo assim seria adequado:

public void save(Veículo v, Cliente c) {
   try {
      session.beginTransaction();
      v.setCliente(c);
      session.save(v);
      session.getTransaction().commit();
   } catch(HibernateException e) {
      session.getTransaction().rollback();
      throw e;
   }
}

[quote=Rafael Guerreiro]Primeiro, coloque as suas entidades aqui para sabermos como está mapeado.

Provavelmente você mapeou o cliente dentro de um veículo, então algo assim seria adequado:

public void save(Veículo v, Cliente c) { try { session.beginTransaction(); v.setCliente(c); session.save(v); session.getTransaction().commit(); } catch(HibernateException e) { session.getTransaction().rollback(); throw e; } } [/quote]

Cliente

public class Cliente implements Serializable{


	private static final long serialVersionUID = 1L;

	private Integer idCliente;
	private String nome;
	private Contato idContato;
	private List<Veiculo> veiculos;

Veiculo

public class Veiculo implements Serializable {

	private static final long serialVersionUID = 1L;

	private Integer idVeiculo;
	private String modelo;
	private String marca;
	private String cor;
	private int ano;
	private String placa;
	private String uf;
	private Cliente idCliente;

ainda não fiz o mapeamento com anotação to relendo alguns matérias , pq estou muito perdido. esse método save ai eu posso colocar ele no DAO de Cliente, mais oque quero tb é que quando eu for cadastrar um cliente eu consiga inserir um ou mais veiculos.

Mas eu queria saber como estava mapeado, então me mostre o mapeamento… Ou então as tabelas.

A questão é: para salvar um veículo com um cliente, você precisa ter um cliente.
Para salvar um cliente com um ou mais veículos, você precisa ter os veículos.

No fim das contas, é isso que importa:

Para ambos os casos.

Há realmente necessidade de ter esse relacionamento bi-direcional? ou seja, Veiculo ter atributo de Cliente e vice-versa?

sim pq quero fazer uma busca no veiculo encontrar o cliente que é dono do veiculo e fazer uma busca no cliente e contrar os veiculos dele.

Mas, dependendo do caso, é muito mais prudente fazer isso via select.

vc pode explicar tipo como assim prudente?

e outra vc sabe algum github ai que tenha códigos desse tipo com CRUD + JSF + JPA + Hibernate com relacionamentos 1:1 , 1:n : n:m e tal

Tem o mamute, que é o código por trás do GUJ respostas: http://www.mamute.org/

Mas acho que ele é em VRaptor 4. Mas o crud é o que importa.

Prudente no sentido de que pode ser melhor você fazer um select no banco de dados para pegar a lista de veículos, dado um cliente, por exemplo.

[quote=Rafael Guerreiro]Mas eu queria saber como estava mapeado, então me mostre o mapeamento… Ou então as tabelas.

A questão é: para salvar um veículo com um cliente, você precisa ter um cliente.
Para salvar um cliente com um ou mais veículos, você precisa ter os veículos.

No fim das contas, é isso que importa:

Para ambos os casos.

[/quote]

eu posso fazer algo do tipo ??

List<veiculo> veiculo = new LinkedList<Veiculo>();
           veiculo.setModelo("g4");
           veiculo.setMarca("gol");
            for(Veiculo veiculo: veic){
                veiculo.setCliente(cliente);
            }

O código, como está escrito, não compila.

Seria isso que você quis dizer?

List<veiculo> veic = new LinkedList<Veiculo>();
for(Veiculo veiculo: veic) {
    veiculo.setCliente(cliente);
    veiculo.setModelo("g4");
    veiculo.setMarca("gol"); 
}

Assumindo que se tenha algum veículo dentro daquela lista, isso funciona.

[quote=Rafael Guerreiro]O código, como está escrito, não compila.

Seria isso que você quis dizer?

List<veiculo> veic = new LinkedList<Veiculo>();
for(Veiculo veiculo: veic) {
    veiculo.setCliente(cliente);
    veiculo.setModelo("g4");
    veiculo.setMarca("gol"); 
}

Assumindo que se tenha algum veículo dentro daquela lista, isso funciona.[/quote]

obrigado