Cadastrar Cliente, endereco, telefone e email. Trabalho de faculdade

Olá, Pessoal !!

Estou com um problema que o professor da faculdade passou e estou quebrando a cabeça.
Ele pediu para construir um formulario de cadastro de clientes. Um cliente pode ter vários endereços, vários telefones e vários emails.
Eu não coloquei a pagina html, pois vai ficar enorme a dúvida.
As tabelas do banco de dados eu criei assim(Coisa bem simples.):

cliente
—id
—Nome


Endereco
—id
—Endereco
—Numero
—bairro


Telefone
—id
—ddd
—Numero


Email
—id
—DescricaoEmail


cliente_endereco
clienteId
EnderecoId


cliente_telefone
clienteId
telefoneId


cliente_email
clienteId
emailId

====================================================================================
Eu criei as seguintes classes

public class cliente{

  List<Endereco> lstEndereco;    
  List<Telefone> lstTelefone;    
  List<Email> lstEmail;  

}

public class Endereco{}

public class Telefone{}

public class Email{}


public interface Dao{
public int cadastrar();
}

public class ClienteDao implements Dao{
public int cadastrar(){}
}
public class EnderecoDao implements Dao{
public int cadastrar(){}
}
public class TelefoneDao implements Dao{
public int cadastrar(){}
}
public class EmailDao implements Dao{
public int cadastrar(){}
}

as classes estao corretas ?
como é que eu faria o cadastro das informações para atender todos os relacionamentos do banco de dados, por exemplo o cadastro do relacionamento “cliente_endereco” ?
é necessário criar mais classes, por exemplo cliente_endereco e cliente_enderecoDao ?

eu consegui fazer mais ou menos assim e travei:

=================================================
Cliente oCliente = new Cliente();
ClienteDao oClienteDao = new ClienteDao();
int idClienteRetorno = oClienteDao.cadastrar(oCliente);

Endereco oEndereco = new Endereco();
EnderecoDao oEnderecoDao = new EnderecoDao();
int idEnderecoRetorno = oEnderecoDao.cadastrar(oEndereco);

Telefone oTelefone = new Telefone();
TelefoneDao oTelefoneDao = new TelefoneDao();
int idTelefoneRetorno = oTelefoneDao.cadastrar(oTelefone);

Email oEmail = new Email();
EmailDao oEmailDao = new EmailDao();
int idEmailRetorno = oEmailDao.cadastrar(oEmail);

pesquisei em tudo que é canto e não achei nada parecido

Primeiro eu acho que vc naum precisa cirar as tabelas cliente_telefone, cliente_email e cliente_endereco,
vc cria a tabela cliente, endereco, telefone e email, e coloca na tabela cliente as chaves estrangeiras.
Depois vc cria os pojos de todas as tabelas do bd.