persistência: Mestre - Detalhe

Prezados,

Já tenho alguma experiência com desenvolvimento web, Flex/Java/MySQL. Porém, me confrontei com uma situação nova, que é criar uma tela mestre/detalhe. E não estou sabendo como persistir os dados na base de dados. Segue abaixo o problema:

Tenho uma tela de cadastro de cliente, nesta tela tem 3 abas, a dos dados do cliente, (nome, sexo, nascimento, cic,…), a dos dados referente a endereço, (tipo endereço, logradouro, bairro, …), a dos dados para contato, (tipo contato, nome, contato…), ou seja um cliente pode ter mais de um endereço (correspondência, entrega, cobrança), assim como pode ter mais de um contato.

Já estou gravando os dado do cliente, porém quando foi implementar a parte de gravar os dados do endereço e contato não estou sabendo como organizar as classes, os pacotes e nem qual padrão de projeto usar para resolver este problema.

Na tela o usuário digita os dado do cliente e passa para a aba de endereço que é uma grade, digita um ou mais endereços e passa para a aba de contatos, onde digita os contatos necessários e grava tudo de uma vez…

já consigo passar os dados do endereço(s) e do contato(s), junto com os dados do cliente. crie na entidade cliente um atributo associativo para endereço e outro para contato (cliente.lstEndereco, que é um array do tipo Endereco) a mesma coisa para contato.

No java na classe RepositorioCliente, consigo ver todos os endereços e conatos. Não sei se assim é a forma mais correta de fazer. Não hibermate, já java puro… Também tem o cadastro de fornecedor que ira ser composto por outros campos e terá a mesma comotação do cadastro de cliente referente a endereço e contato.

Gostaria da ajuda de vocês… como implementar este processo ?