Duvida Usar DAO

8 respostas
colored

Bom Fiz um Sistema aki no Trampo, nd d espetacular, porem eu ate tentei usar MVC…

Tipo pra Adicionar alguma coisa eu ate sei fazer, mas tipo select, delete, update eu n sei fazer usando DAO.
keria saber c alguem tem algum exemplo simples d como fazer pra eu ver so os passos q eu consigo fazer…

Tipo Keria ver c eh mais o menos assim MVC… Tipo os meus Forms eu Deixo Na View, os Metodos Dela, ficam na Controller, e o bean e o Dao ficam no model…
Eh mais o menos assim ow ta tudo errado…

quer puder da uma força ai valeu…

8 Respostas

victor.godinho

Issu ai filhote.

Só não entendi a parte de

Tipo pra Adicionar alguma coisa eu ate sei fazer, mas tipo select, delete, update eu n sei fazer usando DAO

Mas beleza... não vem ao caso, kara, um exemplo bunda de DAO no MVC:

Camada da view:

public class View {
    public void exibirLista() {
        int tipo = Integer.parseInt(JOPtionPane.showInputDialog(null,"Informe o tipo"));
    
        Business b = new Business();
        List<String> lista = b.pegarLista(tipo);

        for (String item : lista) System.out.println(item);
    }
}

Business:

public class Business {
    public List<String> pegarLista(int tipo) {
        if (tipo <= 0) return null;
    
        DAO d = new DAO();
        return d.pegarLista(tipo);
    }
}

DAO:

public class DAO {
    public List<String> pegarLista(int tipo) {
        //pega conexão
        //cria statement
        //atribui o 'tipo' na query
        //executa e percorre o ResultSet
        //Durante as iterações acima, popule seu LinkedList<String>
        return minhaLista;
    }
}
Saka?? O DAO funciona igual o MVC, separar as camadas... então nele você provavelmente vai ter métodos como:
public void inserir(Usuario usuario) throws Exception;
public void alterar(Usuario usuario) throws Exception;
public void deletar(int id) throws Exception;
public List pesquisar();

....

Falows

Andre_Fonseca
victor.godinho:
Issu ai filhote.

Só não entendi a parte de

Tipo pra Adicionar alguma coisa eu ate sei fazer, mas tipo select, delete, update eu n sei fazer usando DAO

Mas beleza... não vem ao caso, kara, um exemplo bunda de DAO no MVC:

Camada da view:

public class View {
    public void exibirLista() {
        int tipo = Integer.parseInt(JOPtionPane.showInputDialog(null,"Informe o tipo"));
    
        Business b = new Business();
        List<String> lista = b.pegarLista(tipo);

        for (String item : lista) System.out.println(item);
    }
}

Business:

public class Business {
    public List<String> pegarLista(int tipo) {
        if (tipo <= 0) return null;
    
        DAO d = new DAO();
        return d.pegarLista(tipo);
    }
}

DAO:

public class DAO {
    public List<String> pegarLista(int tipo) {
        //pega conexão
        //cria statement
        //atribui o 'tipo' na query
        //executa e percorre o ResultSet
        //Durante as iterações acima, popule seu LinkedList<String>
        return minhaLista;
    }
}
Saka?? O DAO funciona igual o MVC, separar as camadas... então nele você provavelmente vai ter métodos como:
public void inserir(Usuario usuario) throws Exception;
public void alterar(Usuario usuario) throws Exception;
public void deletar(int id) throws Exception;
public List pesquisar();

....

Falows

Victor,

Talvez eu não saiba fazer direito ou então como você disse o seu exemplo é muito simples.

Aqui tem uma arquitetura semelhante a sua, mas ai eu pergunto, pra que ter uma camada de business que apenas lê um parâmetro faz um if e chama direto o método do DAO???

Não é muita frescura isso para projetos simples? E aqui ainda definiram um monte de interfaces, para recuperar uma lista de clientes eu preciso de uma interface ClienteBusiness, implementar uma classe ClienteBusinessImpl, ter outra interface ClienteDAO, uma classe ClienteDAOHibernateImpl, eu acho exagero isso tudo..

Muitas vezes eu tenho visto uma arquitetura muito engessada e complexa para resolver problemas simples, as vezes as pessoas lêem sobre padrões, arquiteturas, etc e acabam se perdendo.. :(

Abs

colored

Tipo fico pior do q eu imaginava…

O q eh essa classe business…

Do q eu tava falando do q adicionar eu sei…

Tipo fazer insert usando DAO eu sei, so me perco nos otros…

colored

Tipo o q eu aprendi neh, na caelum agent fazia tipo assim…

Pra insert agent No Dao MOstrava q era pra add todos os get dos atributos, e na classe do metodo agent passava o set q agent keria q adicionasse n sei c eh o certo…

pra o select eh tipo assim n eh eu faço um metodo q vai retornar uma lista com todo o resultado da minha query, ai na minha classe do controller eu crio uma outra lista q vai receber a lista retornada pelo metodo eh isso?

Agora update e delete nem imagino como fazer.

victor.godinho

hahaha, concordo com você, muitas vezes as pessoas ficam ouvindo tantas palavras e siglas, que querem colocar todas, quando na verdade uma boa arquitetura é aquela que consegue fazer exatamente aquilo que você quer/planeja sem desperdícios, sejam eles em processamento no servidor ou horas de desenvolvimento.

Mas a verdade mesmo, é que todo mundo usa esses conceitos que você descreveu, quanto a produtividade, isso vai de acordo com o quanto você ir se acostumando, vai ter uma hora que quando alguem falar pra você faça um sistema escrotão, você já vai começar a colocar vários design patterns, simplismente porque pra você, essa tarefa, esse cuidado a mais, não custa horas pra você, é normal…

Voltando ao assunto principal… rsrs… O conceito do Business, é de realizar todas as regras de negócio, então qual o problema? O problema é que você não consegue aplicar esse conceito a um único processo e aos outros esquecer e fazer “direto”, então o que o pessoal faz? aplica a tudo.
Outro lado bom, é que por exemplo quando você tiver um erro pra concertar, você não vai ter que ficar “Opa, essa linha eu monto a mensagem na tela, essa eu me conecto, essas eu vejo se usuário tá autenticado,…” você vai direto ao problema.
O problema é qual?? A forma de como os números estão sendo exibidos? ótimo! Olhe nessa classe, nesse método, e lá vai estar tudo que você precisou para fazer isso.
O problema é qual?? O usuário consegue se logar mesmo quando desativado? Entre nessa classe Business, nesse método e pronto.

Saka?

Falows

P

Ukei, ukei. Vamos lá.

Vamos começar do ZERO - MVC é uma arquitetura de software que define basicamente tres tiers (n sei isso em pt, mas acho que é camada) que são:

Model -> Essa é a camada que realiza a persistencia dos dados, aqui existe normalmente os JavaBeans das entidades a serem persistidas assim como aqui existe a conexão com o banco.
View -> A tier de visualização, basicamente ela só serve para mostrar as coisas pro usuário.
Controller -> Nesta tier, você tem as classes que fazem coisas como validação dos dados, formatação dos dados, assim como essa camada muitas vezes vê se os parametros passados são corretos e possiveis.

Então vamos supor uma arquitetura besta: uma aplicaçãozinha que serve para inserir usuários e pesquisar os usuários.

Nós vamos ter na tier Model um JavaBean(que nada mais é uma representação de um objeto a ser persistido com parametros encapsulados) que terá como função persistir os dados e fazer a comunicação com o BD. Aqui por exemplo, voce pode adicionar os métodos para inserir no Banco de dados determinados parametros, etc. É aqui que normalmente se faz isso.

Agora na tier Controller, agente vai ter uma validação dos dados que o usuário passa e checagem pra ver se todos os parametros estão corretos, por exemplo.

Na camada de visualização nós vamos ter o JSP que vai mostrar as informações e também envia-las para os componentes da camada Controller. Os campos de texto, etc.

Agora vamos dar uma definição pe de chinelo ao DAO:
Data Access Object é um padrão mínimo a ser usado pra executar um banco de daods dfe forma correta. Que corresponde em um JavaBean que recebe parametros assim como os captura e também que pode ser persistido no BD. Uma coisa ótima é por exemplo: você tem que dar um preparedStatement() com a seguinte SQL: “SELECT * FROM USUARIOS WHERE NOME= ?;” Essa forma não é tão elegante porque voce vai ter que usar o getText() do TextField e ai, só então somente, vocẽ poderá persistir isso ou fazer qualqur outra coisa. Isso acaba com a manutenção do código.

Agora, vendo isso, pense e responda: Como usar DAO e MVC ao mesmo tempo? Você vai ver como isso tá na alma e é bem simples.

Pense… pense…
[]'s!

rafaelglauber

Leitura interessante para quem interessar: http://fragmental.com.br/wiki/index.php?title=MVC_e_Camadas

ps. algumas pessoas se decepcionam após a leitura, verificam que estavam equivocadas.

colored

Bom o q me disseram pelo confirmo mais o menos o q eu sabia, tipo fiz um sistema ah um tempo vo mostrar mais o menos pra ver se ta assim qse entrando no padrao.

Package Model -> Aki eu tenho Meu DAO de Funcionarios, e o bean de Funcionarios, (Num sabia q podia por o Connection Factory aki antes eu criava um Package Chamado Connection)

Package View -> aki ta o Form da Aplicação.

Package Controller -> Aki q eu faço todas as verificações, os eventos de botoes, e tudo pra executar o sistema.

N Sei c eh o certo mas derem pra falar o q ta faltando blz =D.

Valeu

Criado 11 de agosto de 2008
Ultima resposta 12 de ago. de 2008
Respostas 8
Participantes 5