Operações com banco de dados Mysql

Galera me da uma força ai. Sou iniciante em Java e estou com problemas aqui na hora de inseri e recumperar dados do banco
Obs : Uso o padrão MVC;
Segue abaixo as classes e interface:

// pacote bean -> class Cliente estou usando o conceito de herança ------------------------------------------->

package com.gercom.bean;

public class Cliente extends Endereco{

}
package com.gercom.bean;

public class Endereco extends Pessoa{
   private String endereco;
   private String complemento;
   private String bairro;
   private String cidade;
   private String estado;
   private String cep;
   
public String getEndereco() {
	return endereco;
}
public void setEndereco(String endereco) {
	this.endereco = endereco;
}
public String getComplemento() {
	return complemento;
}
public void setComplemento(String complemento) {
	this.complemento = complemento;
}
public String getBairro() {
	return bairro;
}
public void setBairro(String bairro) {
	this.bairro = bairro;
}
public String getCidade() {
	return cidade;
}
public void setCidade(String cidade) {
	this.cidade = cidade;
}
public String getEstado() {
	return estado;
}
public void setEstado(String estado) {
	this.estado = estado;
}
public String getCep() {
	return cep;
}
public void setCep(String cep) {
	this.cep = cep;
}
   
   
}
package com.gercom.bean;

public class Pessoa{

	  private int id;
	  private String nome;
	  private String sexo;
	  private long cpf;
	  private String rg;
	  private String dataExpedicao;
	  private String orgaoExpeditor;
	  private String nomeConjugue;
	  
	  private String cargo;
	  private double renda;
	  private String empresa;
	  private String telefoneEmpresa;
	  
	  private String telefone;
	  private String telefone2;
	  private String celular;
	  private String celular2;
	  private String fax;
	  private String email;
	  private String site;
	  private String dataCadastro;
	  
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getSexo() {
		return sexo;
	}
	public void setSexo(String sexo) {
		this.sexo = sexo;
	}
	public long getCpf() {
		return cpf;
	}
	public void setCpf(long cpf) {
		this.cpf = cpf;
	}
	public String getRg() {
		return rg;
	}
	public void setRg(String rg) {
		this.rg = rg;
	}
	public String getDataExpedicao() {
		return dataExpedicao;
	}
	public void setDataExpedicao(String dataExpedicao) {
		this.dataExpedicao = dataExpedicao;
	}
	public String getOrgaoExpeditor() {
		return orgaoExpeditor;
	}
	public void setOrgaoExpeditor(String orgaoExpeditor) {
		this.orgaoExpeditor = orgaoExpeditor;
	}
	public String getNomeConjugue() {
		return nomeConjugue;
	}
	public void setNomeConjugue(String nomeConjugue) {
		this.nomeConjugue = nomeConjugue;
	}
	public String getCargo() {
		return cargo;
	}
	public void setCargo(String cargo) {
		this.cargo = cargo;
	}
	public double getRenda() {
		return renda;
	}
	public void setRenda(double renda) {
		this.renda = renda;
	}
	public String getEmpresa() {
		return empresa;
	}
	public void setEmpresa(String empresa) {
		this.empresa = empresa;
	}
	public String getTelefoneEmpresa() {
		return telefoneEmpresa;
	}
	public void setTelefoneEmpresa(String telefoneEmpresa) {
		this.telefoneEmpresa = telefoneEmpresa;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
	public String getTelefone2() {
		return telefone2;
	}
	public void setTelefone2(String telefone2) {
		this.telefone2 = telefone2;
	}
	public String getCelular() {
		return celular;
	}
	public void setCelular(String celular) {
		this.celular = celular;
	}
	public String getCelular2() {
		return celular2;
	}
	public void setCelular2(String celular2) {
		this.celular2 = celular2;
	}
	public String getFax() {
		return fax;
	}
	public void setFax(String fax) {
		this.fax = fax;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getSite() {
		return site;
	}
	public void setSite(String site) {
		this.site = site;
	}
	public String getDataCadastro() {
		return dataCadastro;
	}
	public void setDataCadastro(String dataCadastro) {
		this.dataCadastro = dataCadastro;
	}
}

// pacote dao-> class Conector ------------------------------------------------------------------------------------->

package com.wellen.arquiteturabd;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * A classe <code>Conector</code> é responsável pela 
 * conexão com o banco de dados mysql
 *   
 */

@Cabecalho(
		  instituicao   = "Sport Total",
		  progeto       = "Sistema de gerenciamento",
		  dataCriacao   = "15/09/2013",
		  criador       = "Wellen P M",
		  revisao       =  001
		 )
public class Conector {
	/**
	 * Faz a conexão com o banco de dados mysql
     * onde deverá ser passado como parâmetros para essa conexão
     * as <em>String com o nome do banco de dados, nome de usuário,
     * e senha de acesso ao banco</em>.    
     * 
	 * @param nomeBanco
	 * @param user
	 * @param senha
	 * @return DriverManager
	 */
	 public Connection getConnection(String nomeBanco, String user, String senha) {
	        try {
	            return DriverManager.getConnection("jdbc:mysql://localhost/"+ nomeBanco, user, senha);
	        } catch (SQLException e) {
	            throw new RuntimeException(e);
	        }
	    }

}

// pacote dao -> class ClienteDao ela implementa a interface Dao que está logo abaixo -------------->

package com.gercom.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import com.gercom.bean.Cliente;
import com.wellen.arquiteturabd.Conector;
import com.wellen.arquiteturabd.Dao;


public class ClienteDao implements Dao{
   
	// USAREMOS PARA CONFIGURAR A NOSSA CONEXÃO COMO BANCO DE DADOS
	Connection conn  = (Connection) new Conector().getConnection("loja", "root", "");
	
	@Override
	public List<Object> Select() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void delete(Object arg0) {
		Cliente cliente = (Cliente) arg0;
		String  sql = "DELETE FROM cliente WHERE id = ?";
		try {
			PreparedStatement pst = conn.prepareStatement(sql);
			pst.setInt(1, cliente.getId());
			pst.executeUpdate();
		
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	@Override
	public void insert(Object arg0) {
		Cliente cliente = (Cliente) arg0;
		
		String sql = "INSERT INTO cliente (nome, sexo, cpf, rg, orgaoExpeditor, nomeConjugue, endereco, complemento, bairro, cidade, "
				+ "estado, cep, telefone, celular, celular2, cargo, renda, empresa, telefoneEmpresa, dataCadastro, dataExpedicao) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
		 
		// -------------------------  --------------------------------->>>
		// ENCAMINHA REQUISIÇÕES AO SERVIDOR
		try {
			PreparedStatement pst = conn.prepareStatement(sql);
			
			pst.setString(1, cliente.getNome());
			pst.setString(2, cliente.getSexo());
			pst.setLong(3, cliente.getCpf());
			pst.setString(4, cliente.getRg());
			pst.setString(5, cliente.getOrgaoExpeditor());
			pst.setString(6, cliente.getNomeConjugue());
			pst.setString(7, cliente.getEndereco());
			pst.setString(8, cliente.getComplemento());
			pst.setString(9, cliente.getBairro());
			pst.setString(10, cliente.getCidade());
			pst.setString(11, cliente.getEstado());
			pst.setString(12, cliente.getCep());
			pst.setString(13, cliente.getTelefone());
			pst.setString(14, cliente.getCelular());
			pst.setString(15, cliente.getCelular2());
			pst.setString(16, cliente.getCargo());
			pst.setDouble(17, cliente.getRenda());
			pst.setString(18, cliente.getEmpresa());
			pst.setString(19, cliente.getTelefoneEmpresa());
			pst.setString(20, cliente.getDataCadastro());
			pst.setString(21, cliente.getDataExpedicao());
			pst.executeUpdate(); 
			
		/*	System.out.println(cliente.getNome() + " "+ cliente.getEndereco());*/
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		
	}

	@Override
	public Object select(int arg0) {
		
		String sql = "SELECT * FROM cliente WHERE id = ?";
		
		Cliente cliente = new Cliente();
		
		try {
			PreparedStatement pst = conn.prepareStatement(sql);
			pst.setInt(1, arg0);
			ResultSet list = pst.executeQuery();
			
			while (list.next()) {
		
				cliente.setId(list.getInt("id"));
				cliente.setDataCadastro(list.getString("dataCadastro"));
				cliente.setNome(list.getString("nome"));
				cliente.setSexo(list.getString("sexo"));
				cliente.setCep(list.getString("cpf"));
				cliente.setRg(list.getString("rg"));
				cliente.setDataExpedicao(list.getString("dataExpedicao"));
				cliente.setOrgaoExpeditor(list.getString("orgaoExpeditor"));
				cliente.setNomeConjugue(list.getString("nomeConjugue"));
				cliente.setEndereco(list.getString("endereco"));
				cliente.setComplemento(list.getString("complemento"));
				cliente.setBairro(list.getString("bairro"));
				cliente.setCidade(list.getString("cidade"));
				cliente.setEstado(list.getString("estado"));
				cliente.setCep(list.getString("cep"));
				cliente.setTelefone(list.getString("telefone"));
				cliente.setCelular(list.getString("celular"));
				cliente.setCelular2(list.getString("celular2"));
				cliente.setCargo(list.getString("cargo"));
				cliente.setRenda(list.getDouble("renda"));
				cliente.setEmpresa(list.getString("empresa"));
				cliente.setTelefoneEmpresa(list.getString("telefoneEmpresa"));
				
			}
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return cliente;
	}

	@Override
	public void update(Object arg0) {
Cliente cliente = (Cliente) arg0;
		
		String sql = "UPDATE set cliente (nome=?, sexo=?, cpf=?, rg=?, orgaoExpeditor=?, nomeConjugue=?, endereco=?, complemento=?, bairro=?, cidade=?, "
				+ "estado=?, cep=?, telefone=?, celular=?, celular2=?, cargo=?, renda=?, empresa=?, telefoneEmpresa=?, dataCadastro=?, dataExpedicao=? where id=?)";
		 
		// -------------------------  --------------------------------->>>
		// ENCAMINHA REQUISIÇÕES AO SERVIDOR
		try {
			PreparedStatement pst = conn.prepareStatement(sql);
			
			pst.setString(1, cliente.getNome());
			pst.setString(2, cliente.getSexo());
			pst.setLong(3, cliente.getCpf());
			pst.setString(4, cliente.getRg());
			pst.setString(5, cliente.getOrgaoExpeditor());
			pst.setString(6, cliente.getNomeConjugue());
			pst.setString(7, cliente.getEndereco());
			pst.setString(8, cliente.getComplemento());
			pst.setString(9, cliente.getBairro());
			pst.setString(10, cliente.getCidade());
			pst.setString(11, cliente.getEstado());
			pst.setString(12, cliente.getCep());
			pst.setString(13, cliente.getTelefone());
			pst.setString(14, cliente.getCelular());
			pst.setString(15, cliente.getCelular2());
			pst.setString(16, cliente.getCargo());
			pst.setDouble(17, cliente.getRenda());
			pst.setString(18, cliente.getEmpresa());
			pst.setString(19, cliente.getTelefoneEmpresa());
			pst.setString(20, cliente.getDataCadastro());
			pst.setString(21, cliente.getDataExpedicao());
			pst.setInt(22, cliente.getId());
			pst.executeUpdate(); 
			
		/*	System.out.println(cliente.getNome() + " "+ cliente.getEndereco());*/
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		
	}
}

// interface Dao ------------------------------------------------------------------------------------------------------------>

package com.wellen.arquiteturabd;

import java.util.List;


/**
 * A classe que implementar essa Interface <code>Dao</code> deverá
 * também implementar todos os seus métodos.
 * 
 */

@Cabecalho(
		  instituicao   = "Sport Total",
		  progeto       = "Sistema de gerenciamento",
		  dataCriacao   = "15/09/2013",
		  criador       = "Wellen P M",
		  revisao       =  001
		 )
public interface Dao {
   
	public void insert(Object o);
	public void update(Object o);
	public void delete(Object o);
	public Object select (int id);
	public List<Object> Select();
}

// Nossa class para testar ---------------------------------------------------------------------------------------------------->

package com.gercom.util;

import com.gercom.bean.Cliente;
import com.gercom.dao.ClienteDao;

public class Start {

	public static void main(String[] args) {

	 Cliente cliente = new Cliente();
     ClienteDao dao = new ClienteDao();
   
        cliente.setDataCadastro("1984/01/25");
	    cliente.setNome("wellen");
	    cliente.setSexo("m");
	    cliente.setCpf(879);
	    cliente.setDataExpedicao("2008/10/22");
	    cliente.setRg("mg 15985647");
		cliente.setOrgaoExpeditor("MG");
		cliente.setNomeConjugue("Marilda");
		cliente.setEndereco("Rua Fabricio Abrantes Pego");
		cliente.setComplemento("Travessa");
		cliente.setBairro("Nova Esperança");
		cliente.setCidade("Malacacheta");
		cliente.setEstado("MG");
		cliente.setCep("30690000");
		cliente.setTelefone("0413791339155");
		cliente.setCelular("0423791339155");
		cliente.setCelular2("0433791339155");
		cliente.setCargo("Vendedor");
		cliente.setRenda(12.99);
		cliente.setEmpresa("Sport Total");
		cliente.setTelefoneEmpresa("0453791339155");
	   // dao.insert(cliente);
		cliente.setId(5);
		
		Cliente c = (Cliente) dao.select(6);
		System.out.println(c.getNome());
	}
}

Consigo faze a inclusão e deleção no banco de dados, mais não consigo obter retorno de um cliente do banco. O pede ser? Já quebrei a cabeça aqui e não achei o erro. Se alguém puder me dar alguma dica de como melhorar meu código fico grato.
Abaixo segue o codigos do banco e o erro:

CREATE TABLE cliente (
id int(10) NOT NULL AUTO_INCREMENT,
dataCadastro date NOT NULL,
nome varchar(255) NOT NULL,
sexo varchar(1) NOT NULL,
cpf int(12) NOT NULL,
rg varchar(12) NOT NULL,
dataExpedicao date NOT NULL,
orgaoExpeditor varchar(8) NOT NULL,
nomeConjugue varchar(255) NOT NULL,
endereco varchar(150) NOT NULL,
complemento varchar(150) NOT NULL,
bairro varchar(100) NOT NULL,
cidade varchar(100) NOT NULL,
estado varchar(50) NOT NULL,
cep varchar(8) NOT NULL,
telefone varchar(15) NOT NULL,
celular varchar(15) NOT NULL,
celular2 varchar(15) NOT NULL,
cargo varchar(150) NOT NULL,
renda decimal(7,2) NOT NULL,
empresa varchar(150) NOT NULL,
telefoneEmpresa varchar(15) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

java.sql.SQLException: Value ‘0000-00-00’ can not be represented as java.sql.Date
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at com.mysql.jdbc.ResultSetImpl.getDateFromString(ResultSetImpl.java:2298)
at com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5860)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5693)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5733)
at com.gercom.dao.ClienteDao.select(ClienteDao.java:153)
at com.gercom.util.Start.main(Start.java:37)
wellen

Por favor, edite teu tópico e coloque o código dentro da tag [code] e não antes dela.