Insert 2 tabelas

1 resposta
A

bom dia

tenho duas tabelas (cliente,endereço)
gostaria de fazer um insert nelas tudo de uma vez no java.
ñ manjo nada de hibernate e nem de JPA mais sei que da pra fazer isso com eles, alguem poderia me dizer como posso fazer isso.
se possivel mandar um tutorial agradeço desde ja!

1 Resposta

Guevara

Olá!
Vc quer usar relacionamento entre cliente e endereço? Se quiser pode fazer um @OneToMany entre cliente e endereço. O que fica diferente é a forma de persistir isso, se for aplicação web vc poderia usar o VRaptor 3 e o form ficaria assim:

<form action="cliente/adiciona" method="post">

	<li><label for="nome">Nome</label>	
	<div><input name="cliente.nome" type="text" maxlength="40" />
	</div>
	</li>
	
	<li><label for="endereco">Endereço</label>	
	<div><input name="enderecos.nome" type="text" maxlength="255" />
	</div>
	</li>	
<input type="submit" value="Enviar" />

A classe Cliente ficaria assim:

@Entity
public class Cliente {
//outros atributos para cliente, data de nascimento, cpf, rg, etc
@OneToMany(targetEntity=Enderecos.class ,cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "cliente",orphanRemoval=true)
	private List<Enderecos> enderecos;
// getters, setters, construtor vazio e construtor preenchido
}

Classe Enderecos:

@Entity
public class Enderecos {
// outros atributos que desejar
@ManyToOne
	private Cliente cliente;
// getters, setters, construtor vazio e construtor preenchido
}

Na hora de gravar, vc terá um método adiciona no ClienteController:

public void adiciona(final Cliente cliente, final Enderecos enderecos) {	
		
		validator.checking(new Validations() {
			{
				that(!cliente.getNome().isEmpty(), "cliente.nome",
						"clienteNome.obrigatorio");
				that(!enderecos.getEndereco().isEmpty(),
						"cliente.endereco", "enderecoCliente.obrigatorio");
			}
		});
		
		
		// Direcionando para o formulario em caso de erro
		validator.onErrorUse(Results.logic()).redirectTo(ClienteController.class).formulario();
		// Associando endereço com o cliente	
		enderecos.setCliente(cliente);
		// Adicionando o cliente e o endereço
		clienteDAO.adiciona(contato, enderecos);		
		// Retornando mensagem de sucesso na inclusão
		result.include("mensagem", "Cliente adicionado com sucesso.");
		}

Na classe ClienteDAO vc teria:

public void adiciona(Cliente cliente, Enderecos enderecos) {
		Transaction tx = session.beginTransaction();
		session.save(cliente);
                session.save(enderecos);
		tx.commit();
	}

Abraço!

Criado 19 de maio de 2010
Ultima resposta 19 de mai. de 2010
Respostas 1
Participantes 2