Jtable com banco de dados

Boa noite criei meu Jtable como recomendado aqui no fórum.
mais estou com problemas para colocar informações do banco de dados nele,
do jeito que ta ele inseri tudo numa só linha.
segue meu meu código qualquer ajuda é de bom tamanho!

 public void buscaextrato()  {
      connexaosql c = new connexaosql();
        
      c.conexao();
        String retorno="";
  
         String sql ="select cli_nome from cliente";
  
  try{
  PreparedStatement stmt = c.con.prepareStatement(sql);
      
        
  ResultSet      rs = stmt.executeQuery ();
 
        while( rs.next()){
       
    String     cod = rs.getString("cli_nome");
        System.out.println(cod);
      
        // tabela //
        
        JPanel jp = new JPanel();
         JTable table = null;
         JScrollPane scroll;
        jp.setBounds(30,30,500,400);
       
        jp.setBackground(Color.RED);
         javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)table.getModel();
       Object dados [][]= {{rs.getString("cli_nome"),"er","gfh","fhg","fh"}};
         String[] titulo = {  
                 "Nome", "Endereço", "Bairro"
                        };  
       
   
        table = new JTable(dados,titulo); 
         table.setBounds(30,30,200,100);
         table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);  
         scroll = new JScrollPane(table);
          scroll.setBounds(30,30,300,200);
          this.getContentPane().add(scroll); 
              
        } }catch(Exception e){
        retorno="Não existe histórico para este cliente!";
        JOptionPane.showMessageDialog(this,retorno); 
    }finally{  
      
        
    }   
}  

O uso da DefaultTableModel e realmente necessário?

Digo isso porque em muitos tópicos aqui do GUJ existem varias explicações recomendando o não uso dessa classe de uma olhada: