MB - Nao consigo chegar ate o metodo "insert" da classe BancoDados, devo ter montado errado as class

ola pessoal
estava fazendo alguns teste aqui e me deparei com um problema de algo que devo ter feito errado nas classes

tenho as seguintes classes para representar uma pessoa

public class Pessoa  implements Serializable {

	private int id;
    private String nome = "";
	private String documento = "";
    private Date nascimento;
    private Logradouro logradouro = new Logradouro();
....
}
public class PessoaFisica extends Pessoa {

	private static final long serialVersionUID = 1094580938504390L;
	private String rg;
	private EstadoCivil estadoCivil;
    private Escolaridade escolaridade;
    private int cursoSuperior;
    private int profissao;
    private Sexo Sexo;
....
}
public interface PessoaFisicaDAO{
	public int insert() throws KrusstException;
	public int update();
	public List getListaPorParametro() throws Exception;
	public void getListaPorId() throws Exception;	
}


public class PessoaFisicaDB implements PessoaFisicaDAO{

	private PessoaFisica pessoaFisica = new PessoaFisica();
	final String INSERT = "EXEC SPPessoaInsert ?,?,?,?,?,?,?";
	final String BUSCA_POR_PARAMETRO = "EXEC SPPessoaBuscaPorParametro ?,?,?,?";	
	
	public PessoaFisica getPessoaFisica() {
		return pessoaFisica;
	}

	public void setPessoaFisica(PessoaFisica pessoaFisica) {
		this.pessoaFisica = pessoaFisica;
	}
	public int insert() throws KrusstException{
...
	}
	
	public List getListaPorParametro() throws Exception{
...
	}	

	public void getListaPorId() throws Exception{
...
	}
	
	public int update() {
...
	}
}

e as seguintes classes para representar o endereço

public class Logradouro {

    private String nome;
    private int numero;
    private String complemento;
    private String bairro;
    private String cep;
    private Cidade cidade;
...
}
public interface LogradouroDAO  {
	public int insert(int pessoaID) throws KrusstException;
	public int update();
}

public class LogradouroDB extends Logradouro implements LogradouroDAO{

	Logradouro logradouro = new Logradouro();
	final String INSERT = "EXEC SPLogradouroInsert ?,?,?,?,?,?,?,?";
	final String LISTA_POR_PARAMETRO = "EXEC SPLogradouroInsert ?,?,?,?,?,?,?,?";	

	
	public LogradouroDB() {
		super();
	}
	
	public LogradouroDB(Logradouro logradouro) {
		super();
		this.logradouro = logradouro;
	}

	public Logradouro getLogradouro() {
		return logradouro;
	}

	public void setLogradouro(Logradouro logradouro) {
		this.logradouro = logradouro;
	}

	public int insert(int pessoaId) throws KrusstException {
...
	}

	public int update() {
...
	}
	
}

agora, qdo eu chego no meu ManagedBean, como eu faco para chegar ate o metodo “insert” do LogradouroDB

meu managedBean

public class PessoaFisicaMB {
	
	private final String ESTADO_DE_PESQUISA 	= "Pesquisar";
	private final String ESTADO_DE_CADASTRO 	= "Cadastrar";
	private final String ESTADO_DE_EDICAO 		= "Editar";
	private final String ESTADO_DE_REVISAO 		= "Revisar";	
	private final String ESTADO_DE_RECADASTRO 	= "Recadastrar";
	
	private String estadoAtual = ESTADO_DE_CADASTRO;
	PessoaFisicaDB pessoaFisicaDB = new PessoaFisicaDB();
...
	public String acaoCadastrar(){
		this.pessoaFisicaDB.insert();
[color=red][b]                 ????????????[/b][/color]
		return "cadastrar";
	}

na parte [color=red] ???[/color] é onde iria o “insert” do logradouro, porem, nessa parte eu me enrosquei…
oq eu fiz de errado nas classes ou que me falta fazer?

abs

T+

Bom o DAO que eu conheço , dá o Insert já no objeto que vc quer inserir, não tem nenhum setObjeto ou getObjeto.

Procure ler sobre o pattern DAO, procure no google que tem …

se você quiser usar o DAO, cologue assim

insert(Pessoa pes)

e dentro do insert vc trata a inserção da pessoa já toda preenchida… nada de dar id, e ter set anterior…

[quote=leonardocregis]Bom o DAO que eu conheço , dá o Insert já no objeto que vc quer inserir, não tem nenhum setObjeto ou getObjeto.

Procure ler sobre o pattern DAO, procure no google que tem …

se você quiser usar o DAO, cologue assim

insert(Pessoa pes)

e dentro do insert vc trata a inserção da pessoa já toda preenchida… nada de dar id, e ter set anterior…[/quote]

1-entao é errado eu ja usar o objeto “pronto”, eu tenho que sempre passar ele por parametro?
2-passar o ID da pessoa? eu nao passei apenas peguei ele do banco, que é o que ele me retorna sempre, pois eu preciso desse ID para cadastrar o Endereco,telefone, email
3-qdo vc diz tratar a “inserção da pessoa já toda preenchida”, voce fiz dos dados da pessoa ou dos dados da pessoa, endereco,email,telefone?

obrigado
abs

1-entao é errado eu ja usar o objeto “pronto”, eu tenho que sempre passar ele por parametro?

Não que seja errado, mas é inapropriado, você vai ganhar mais passando ele por parâmetro.

2-passar o ID da pessoa? eu nao passei apenas peguei ele do banco, que é o que ele me retorna sempre, pois eu preciso desse ID para cadastrar o Endereco, telefone, email?

Como não passou , você botou ele como parâmetro no LogradouroDAO… teoricamente o insert seria de um logradouro, ou seja seguindo a lógia que eu disse antes, seria um objeto Logradouro , todo preenchido.

3-qdo vc diz tratar a “inserção da pessoa já toda preenchida”, voce fiz dos dados da pessoa ou dos dados da pessoa, endereco,email,telefone?

Voce vai inserir todos os dados do objeto que vc passará por parâmetro.

[quote=leonardocregis]1-entao é errado eu ja usar o objeto “pronto”, eu tenho que sempre passar ele por parametro?

Não que seja errado, mas é inapropriado, você vai ganhar mais passando ele por parâmetro.

2-passar o ID da pessoa? eu nao passei apenas peguei ele do banco, que é o que ele me retorna sempre, pois eu preciso desse ID para cadastrar o Endereco, telefone, email?

Como não passou , você botou ele como parâmetro no LogradouroDAO… teoricamente o insert seria de um logradouro, ou seja seguindo a lógia que eu disse antes, seria um objeto Logradouro , todo preenchido.

3-qdo vc diz tratar a “inserção da pessoa já toda preenchida”, voce fiz dos dados da pessoa ou dos dados da pessoa, endereco,email,telefone?

Voce vai inserir todos os dados do objeto que vc passará por parâmetro.[/quote]

1-tendi, bem…la vou eu mudar todas as minhas classes…rs, mas valeu pelo toque
2-sim eu passei, porem, no Banco de dados, eu preciso saber de quem é o endereço, por isso passar o ID da pessoa, seguindo o que vc me disse no numero “1”, eu teria que passar como parametro a objeto logradouro e mais o ID da Pessoa a que pertence.
bem, seguindo esta logica que te disse, qual seria a solucao pra nao passar o ID, pq nao tenho como cadastrar o endereco da pessoa sem o ID dela.
3-tendi, passo os dados do objeto especifico, pensei que vc tinha falado pra quando cadastrar a Pessoa, ja cadastrar tudo de uma so vez.

obrigado
T+

[quote=leonardocregis]1-entao é errado eu ja usar o objeto “pronto”, eu tenho que sempre passar ele por parametro?

Não que seja errado, mas é inapropriado, você vai ganhar mais passando ele por parâmetro.

2-passar o ID da pessoa? eu nao passei apenas peguei ele do banco, que é o que ele me retorna sempre, pois eu preciso desse ID para cadastrar o Endereco, telefone, email?

Como não passou , você botou ele como parâmetro no LogradouroDAO… teoricamente o insert seria de um logradouro, ou seja seguindo a lógia que eu disse antes, seria um objeto Logradouro , todo preenchido.

3-qdo vc diz tratar a “inserção da pessoa já toda preenchida”, voce fiz dos dados da pessoa ou dos dados da pessoa, endereco,email,telefone?

Voce vai inserir todos os dados do objeto que vc passará por parâmetro.[/quote]

[quote=leonardocregis]1-entao é errado eu ja usar o objeto “pronto”, eu tenho que sempre passar ele por parametro?

Não que seja errado, mas é inapropriado, você vai ganhar mais passando ele por parâmetro.

2-passar o ID da pessoa? eu nao passei apenas peguei ele do banco, que é o que ele me retorna sempre, pois eu preciso desse ID para cadastrar o Endereco, telefone, email?

Como não passou , você botou ele como parâmetro no LogradouroDAO… teoricamente o insert seria de um logradouro, ou seja seguindo a lógia que eu disse antes, seria um objeto Logradouro , todo preenchido.

3-qdo vc diz tratar a “inserção da pessoa já toda preenchida”, voce fiz dos dados da pessoa ou dos dados da pessoa, endereco,email,telefone?

Voce vai inserir todos os dados do objeto que vc passará por parâmetro.[/quote]

1-tendi, bem…la vou eu mudar todas as minhas classes…rs, mas valeu pelo toque
2-sim eu passei, porem, no Banco de dados, eu preciso saber de quem é o endereço, por isso passar o ID da pessoa, seguindo o que vc me disse no numero “1”, eu teria que passar como parametro a objeto logradouro e mais o ID da Pessoa a que pertence.
bem, seguindo esta logica que te disse, qual seria a solucao pra nao passar o ID, pq nao tenho como cadastrar o endereco da pessoa sem o ID dela.
3-tendi, passo os dados do objeto especifico, pensei que vc tinha falado pra quando cadastrar a Pessoa, ja cadastrar tudo de uma so vez.

obrigado
T+

O id é gerado ou você tem algum cadastro já definido?

Se for gerado, você pode criar no momento da inserção da tabela.
Senão você pode coloca-lo já incluído na classe que você vai incluir.
Por outro lado, se o lougradouro está sempre vinculado a uma classe X, então que você faça o vínculo no momento de salvar a classe X. Dessa forma, você continua com o esquema de passagem de objeto.

3- com relação a cadastrar tudo de uma vez. Você até pode, desde que o objeto já contenha tudo que tenha que ser cadastrado. Ai você utilizaria todos os DAOs para completar a tarefa.

Não sei se fui muito claro…

[quote=leonardocregis]O id é gerado ou você tem algum cadastro já definido?

Se for gerado, você pode criar no momento da inserção da tabela.
Senão você pode coloca-lo já incluído na classe que você vai incluir.
Por outro lado, se o lougradouro está sempre vinculado a uma classe X, então que você faça o vínculo no momento de salvar a classe X. Dessa forma, você continua com o esquema de passagem de objeto.

3- com relação a cadastrar tudo de uma vez. Você até pode, desde que o objeto já contenha tudo que tenha que ser cadastrado. Ai você utilizaria todos os DAOs para completar a tarefa.

Não sei se fui muito claro…[/quote]
ele é gerado, quem me retorna é a tabela na hora da inserção
sim ele esta vinculado,porem, ele é um atributo do pessoa, e tem o DAO dele separado, nao tem vinculo ao Pessoa,e ate pelo que eu entendi, seria errado existir esse vinculo neste caso, como vc me disse anteriormente.

na verdade ocorre isso, so que chamando os metodos 1 a 1

abs
T+

a me esqueci de comentar

qdo eu chamar os metodos, eu tenho que chamar da classe PessoaDB ou da PessoaDAO?
pelo que entendi da pessoa DAO?
mas, no caso de eu ter um insert de DB e um te TXT, como eu faco a distinçao de cada um?

abs
T+

Cara, a questão é você usar o PESSOADAO sempre…

Só precisa de algum “configurador” ou uma factory, setar para o tipo de pessoaDAO que você vai usar…

blz
teria um exemplo?

obrigado
abs

Um exemplo ligeiramente tosco.
Mas funcional… procure ler também sobre IOC e o Spring framework.

[code]public class DAOFactory(){

private static final DAOPessoa;
public static DAOPessoa getInstaciaDAOPessoa(){
return DAOPessoa;
}

public static setDAOPessoa(DAOPessoa){
this.DAOPessoa = DAOPessoa;
}

}

public class ApplicationStartup(){

 public static void main(String[] args){
      DAOFactory.setDAOPessoa(new PessoaFisicaDB);
      /** use o dao ao longo do projeto, ele vai sempre trazer a pessoa certa */
 }

}[/code]