Dúvida com MVC + DAO

11 respostas
victorrgds

Fala galera, blz?!

Bom galera, o meu problema é o seguinte:

Tenho uma classe de locação de veiculos com os atributos e tal e estava criando um DAO da mesma, porém…

Clientes PF e PJ’s podem fazer uma locação(eu tenho as classes dos dois tipos de clientes, tanto PF como PJ).

Ai vem a dúvida…eu faço só um DAO para locação ou crio um DAO para LocacaoPF e LocacaoPJ???

Eu tinha pensado em utilizar extend e tal, mas eu precisaria fazer 2 extends, oque não é possivel no java…

Alguem poderia me ajudar nesse sabado frio e chuvoso ?! hauhauha

Abs,

11 Respostas

M

Levando em conta o que você disse, eu criaria apenas um DAO supondo que a sua classe Locacao é a representação de uma tabela no banco.

Té mais.

victorrgds

M@C:
Levando em conta o que você disse, eu criaria apenas um DAO supondo que a sua classe Locacao é a representação de uma tabela no banco.

Té mais.

sim, é a representação de uma tabela no banco…porém assim, na minha interface de locação vc tem que especificar se o cliente é PF ou PJ através de um JRadio, para ai sim fazer uma busca do cliente e depois o veículo, assim juntando as duas informações e efetuando a locação…

Você acha que não é necessário criar 2 daos então?

abs

M

Eu acredito que não, pois embora uma locação possa ser feita por pessoas físicas de jurídicas, existe apenas uma classe Locacao e por esse motivo acredito que apenas um DAO seja necessário para manipular locações na base.

Mas seria legal ver a opinião de mais gente aqui no fórum. :slight_smile:

Té mais.

victorrgds

Sim, comecei a analisar aqui e, na parte da consulta eu não precisaria de um extend para dar um select na tabela de clientepf ou pj, então creio que não necessite mesmo de dois daos…

valeu bro, vamos ver se alguem da mais dicas aqui…

ssh

só uma mesmo, você pode usar o conceito de herança/polimorfismo. criando uma classe Pessoa, e pessoa juridica e fisica extenderiam Pessoa.

e dentro da classe locação você cria um atributo do tipo Pessoa.

somente 1 dao p/ locação.

victorrgds

sim ssh, no caso eu já tenho essa classe…

tenho a classe cliente seguida das classes clientePF e clientePJ que herdam de cliente…

então dentro do DAO da locação eu criaria um atributo do tipo cliente?

erico_kl

Se os dois tipos de clientes irão locar, sim. Veja que o que importa no seu caso é gravar o cliente correto na locação (que provavelmente é identificado por um ID), sendo assim não importa se é ClientePJ ou ClientePF, o que importa é que seja um Cliente, e isso tanto o ClientePJ quanto o ClientePF são.

victorrgds

cara, eu até entendi a idéia…mas não to sabendo como vo implementar isso…sinceramente.

pq por exemplo a parte de consulta no DAO, na minha interface eu pesquiso o cliente e o veiculo, depois de selecionar os 2 em JTables separados eu clico no botão efetuar locação…a pesquisa do cliente e veiculo ficaria +/- assim?

//Pesquisa veiculos
	public List<Locacao> pesquisar(String buscaText) {
		
		ArrayList resultadoPesquisa = new ArrayList<Veiculos>();
		
		String sqlSelect = "SELECT * FROM veiculo WHERE nome LIKE '%"+buscaText+"%'";
		PreparedStatement stm = null;
		ResultSet rs = null;
		Connection conn = null;
		
		try {
			AcessoBD bd = new AcessoBD();
			conn = bd.obtemConexao();
			
			stm = conn.prepareStatement(sqlSelect);

			rs = stm.executeQuery();

			while (rs.next()) {
				Veiculos rsc = new Veiculos(
						rs.getInt("idVeiculo"),
						rs.getString("nome"),
						rs.getString("grupo"),
						rs.getString("modelo"),
						rs.getString("placa"),
						rs.getString("chassi"),
						rs.getString("ar"),
						rs.getString("cadeira"),
						rs.getString("gps"));
						resultadoPesquisa.add(rsc);
			}
			return resultadoPesquisa;
			
		} catch (Exception e) {
			e.printStackTrace();
			return resultadoPesquisa;
			
		} finally {
			if (stm != null) {
				try {
					stm.close();
				} catch (SQLException e1) {
					System.out.print(e1.getStackTrace());
				}
			}
		  }
	
	}

e só altero onde estiver veiculo pra “locação” ou não altero? deixo veiculo mesmo? ai que vem a pergunta…pode ser uma duvida imbecil, mas não consegui entender 100% isso…

abs

ViniGodoy

Por favor, ao postar tópicos, dê um título descritivo.

O título que você deu, além de não ajudar nada a quem lê a lista de tópicos, não fala mais do que o óbvio. Se você não tivesse uma dúvida (cruel ou não), você sequer abriria o tópico, certo?

victorrgds

ViniGodoy:
Por favor, ao postar tópicos, dê um título descritivo.

O título que você deu, além de não ajudar nada a quem lê a lista de tópicos, não fala mais do que o óbvio. Se você não tivesse uma dúvida (cruel ou não), você sequer abriria o tópico, certo?

ok, alterado!

erico_kl

Confesso que não entendi o que você está tentando fazer… Vocẽ tem o seguinte método:

public List<Locacao> pesquisar(String buscaText)

mas nele você retorna uma lista de Veiculos… Primeiro defina se este método vai retornar locações ou veículos

Não confunda a responsabilidade de cada DAO… Supondo que você tenha uma DAO para Veiculo e outra para Locacao, deixe que cada uma faça os seus CRUDs… Não tem porquê uma DAO de Veiculo carregar uma lista de locações e vice-versa

O seu problema é simples de resolver. Coloque um objeto Cliente (veja que não é nem ClientePF nem ClientePJ, é um Cliente) na tua classe Locacao e trabalhe com este objeto… Se possível, defina a classe Cliente como sendo abstrata para evitar que exista um Cliente que não seja ClientePF ou ClientePJ.

Criado 13 de outubro de 2012
Ultima resposta 14 de out. de 2012
Respostas 11
Participantes 5