Persistencia em MySQL

3 respostas
murilo.camargo

Olá sou novo aqui e gostaria da ajuda de vcs.
seguinte

to criando um sisteminha pra um trab da faculdade, e to com uma duvida na hora de cadastrar no banco.

heys meu problema, quero cadastrar uma instancia da Classe Pessoa no banco, soh que essa Pessoa pode ter um ou mais instancias da Classe Endereco, e um ou mais instancias da classe Contato, ou seja, uma pessoa pode ter um ou varios endereços cadastrados e um ou mais contatos cadastrados.

Na classe Pessoa eu fiz o seguinte.

public class PessoaDTO extends DTO {

    private int Codigo;
    private String Nome;
    private List Endereco;
    private List Contato;
}

ali tem uma lista de endereços e contatos.

na classe que interage com o banco esta assim:

public DTO registrar(DTO pDTO) throws AUTOPELPersistenciaException {
        PessoaDTO obj = (PessoaDTO) (DTO) pDTO;
        Connection conn = null;
        try {
            conn = Conexao.getInstancia().getConnection();
        } catch (Exception ex) {
            Logger.getLogger(PessoaIMPL.class.getName()).log(Level.SEVERE, null, ex);
        }
        PreparedStatement pstmt = null;
        String sql = "INSERT INTO Pessoa"
                + "(Codigo,Nome,CodigoEndereco,CodigoContato)"
                + "VALUES(?,?,?,?)";
        try {
            pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1, obj.getCodigo());
            pstmt.setString(2, obj.getNome());
            for(int i = 0; i < obj.getEndereco().size(); i++){
              //AQUI ESTA COMO FAÇO ISSO??? COMO CADASTRO OS ENDEREÇOS DA PESSOA NA LISTA??  
            }
            pstmt.execute();
        } catch (SQLException e) {
            throw new AUTOPELPersistenciaException(e.getMessage());
        } finally {
            Conexao.getInstancia().closeConnection(conn, pstmt, null);
        }
        return pDTO;
    }

aqui está, como faço ali na hora do pstmt para colocar os varios endereços na lista da pessoa???

nao sei se fico muito claro

3 Respostas

andbecker

será que concatenar os resultados serve como solução?

aix

hahaha, what this?
do this: before you save the person needs to save the addresses and contacts, make a loop in saving lists one by one and finally the person, how uses to you JDBC remember to have created the correct Key Foren, it was hugs.

freakazoid

murilo.camargo, crie um objeto do tipo Endereco fora do seu for. Dentro do for percorra a sua list de enderecos e as set dentro do objeto endereco criado e em seguida chame o metodo de cadastro de endereco.
Lembrando que o mais logico é que a na tabela de endereco tenha o atributo cod_pessoa para associar o endereco a pessoa.

Espero ter te ajudado!
Abraço

Criado 29 de maio de 2012
Ultima resposta 29 de mai. de 2012
Respostas 3
Participantes 4