Dúvidas com DAO

Estou querendo começar a desenvolver no padrão DAO.

Estou utilizando somente JDBC para persistir os dados e queira saber como aplicar os conceitos.

Eu criei uma classe DAO e dentro dela só está os acessos ao banco mas toda vez que eu for utilizá-la eu tenho que criar uma instância dela???

Estranho isso…

Alguém pode me indicar um bom material??

Obrigado

Ola,

Vc pode dar uma olhada nesta documentação da sun, aqui.

O normal é sempre criar uma instâcia mesmo. Em toda action/servlet que você precisar de uma instância do DAO. Você pode usar um framework de IoC para tornar o gerenciamento do ciclo de vida dos objetos bem mais enxuto.

O Spring tem um bom módulo de IoC, vale a pena dar uma olhada.

Vou dar uma olhada no Spring mas infelizmente estou trabalhando em uma empresa que não gosta de utilizar nenhum framework e não utiliza nenhum padrão de projeto.

A empresa tem medo de ficar presa aos frameworks existentes (não entendi muito bem isso mas td bem).

Agora que estamos começando a passar as coisas para o MVC…

Vários JSP’s utilizando scriptlets, várias regras de negócio no jsp e outras coisas…

Por isso queria ao menos começar utilizando o padrão DAO para facilitar a leitura do acesso aos dados. Eu criei uma classe ClienteDAO e lá coloquei os métodos escritos em JDBC para retornar os resultados mas parece que o padrão DAO utiliza interfaces né isso? Terei de rever o q foi feito.

Agradeço a ajuda… Agora vou pesquisar mais sobre esses DAO’s.

OBS: Não utilizamos nem SERVLETS… A parada é super bizarra

Então se a empresa não quer se antenar e se atualizar com o que tem de melhor no mercado ela está se prendendo ao passado. Concordo com ela em dizer a não ficar preso em alguns frameworks (na parte de persistência). Mas hoje em dia com Hibernate, JPA e iBATIS isso já não existe.

Hoje em dia é comum você encontrar vários projetos utilizando Hibernate + Spring + Struts.

É. Eu estava trabalhando em outra empresa que utilizava struts e ejb.

A programação pura em java acaba fazendo com que os projetos não fiquem totalmente estruturados no MVC e isso dificulta muito a manutenção do software.

Na real, ao invés de vc usar um framework qualquer, vc usa um framework que implementa uma especificação.
Por exemplo:
Para visão vc usa JSF (Java Server Faces) que é uma especificação, e ai como implementação dessa especificação vc pode usar o myfaces, ai a menos que vc comece a usar coisas especificas do myfaces, a qualquer hora você pode jogar o myfaces fora e pegar outra lib que implementa a especificação JSF… se o myfaces for pro saco, você não vai se ferrar, porque é só pegar outra lib.
Para persistencia vc usa JPA (java persistence API), e ai como implementação dessa especificação pode usar o Hibernate ou TopLink, se você usar o hibernate, a menos que você crie coisas especificados que só o hibernate tem (por exemplo usar a api Criteria que ainda não existe no JPA), vc não vai estar dependente do hibernate, apenas da especificação JPA, e a qualquer momento pode mudar do hibernate para outro framework que implementa essa especificação.
Se quizer programar a parte de negócio com objetos distribuidos, usando vantagens como transação e segurança, vc usa EJB3 por exemplo. Caso você não use algo especifico de um servidor de aplicação, sua aplicação rodará em qualquer servidor de aplicação que implementa JEE (Jboss, Geronimo, WebSphere, BEA WebLogic, etc)

Se não quizer ficar dependente de um framework modinha, usa as especificações, elas fazem parte da api do java, ficar dependente delas não tem problema, pois elas vão evoluir junto com o java. Tenta mudar a cabeça do pessoal ai para ter essa visão.

O problema é que o pessoal não tem esse reciocínio…

Eu estava tentando convencer o pessoal a utilizar JSTL nos JSP’s e servlet como controle para aplicar o MVC mas eles não quiseram… POR MEDO DE FICAR DEPENDENTE DO JSTL (o que será q isso quer dizer!?)…

Eles preferem utilizar uma classe java com out.print para gerar o código HTML do jsp…

Ja tentei explicar sobre a especificação de servlets e tal mas infelizmente não deu em nada.

O programador é realmente muito bom… sabe muito mas infelizmente está preso ao passado como disseram…

Ja estou começando a procurar outro estágio pq acho q esse vai pro saco pois começar a fazer TUDO em, java na mão acaba tornando a programação chata, massuda e sem sentido já que o propósito do java é o reaproveitamento de código.

Aproveito para fazer uma propaganda:

Se Alguém souber de um estágio em java me avise :slight_smile:

Como o luBS mencionou, tente seguir a especificação. JSTL faz parte da especificação então o projeto não ficará preso à uma coisa qualquer.

Então pelo que você falou acho melhor você procurar outro estágio mesmo, porque essa visão da empresa está totalmente errada. Se você diz que esse programador é bom, por que ele não está atento à isto? Ou ele está ganhando muito bem e está seguindo ordens ou não sei.

Continuar dessa maneira só fará com que seu projeto se atrase muito mais e irá ser um péssimo sistema para dar suporte. Nos projetos ninguém utiliza nem scriptlets nas JSPs, imagine códigos HTML no Servlet.

Mas cada caso é um caso, por que você não conversa com seu gerente/diretor/dono da empresa? Peça uma consultoria. Aí no Rio tem o Guilherme Mello (daqui do Portal Java), o Phillip Calçado (do GUJ) e mais outros excelentes consultores.

Noto que você tem uma excelente visão e idéia dos conceitos, mas a sua empresa dificultará até o seu crescimento profissional.

O problema é q ele tem uma visão muito antiquada e não nem saber de especificação nem nada. Acho que ele pensa que ficará preso às servlets…

Não sei qual o problema de se utilizar JSTL o código fica 100% limpo com uma estrutura boa do MVC mas eles preferem gerar o código em classes concatenando uma string…

A parada é horrível.

Tentei explicar as especificações pra ele mas não querem saber…

O programador é muito bom mesmo até pq ele conseguir desenvolver aplicações sem MVC e sem nenhum tipo de padrão de projeto pra mim ele é quase um DEUS. O código fica inelegível para outros programadores mas ele consegue prestar suporte.

Acho que esse tópico já até fugiu do título que era no começo.

Fica claro que sua empresa não terá muitas chances no mercado caso continue mantendo esse tipo de “programação Java”. Infelizmente isso ainda é muito comum em algumas empresas que acham que desenvolver em Java é criar um Servlet, concatenar umas String e pronto.

O que você pode fazer é montar um projeto piloto utilizando algumas da melhores tecnologias tanto para a camada de persistência quanto na camada de visualização e mostrar para seu gerente. Pode ser que ele nunca tenha visto um bom projeto Java construído com boas ferramentas e tecnologias.

Caso ele não queira investir nessa idéia, eu (veja bem, eu!) pularia fora desse trabalho e procuraria uma coisa melhor.

Quanto ao DAO, geralmente é construído um interface para que todas as classes que a implementem, assinem um contrato que define as operações básicas para qualquer implementação de DAO, como por exemplo: JDBCDAOImpl, HibernateDAOImpl, etc…

Po vou comprar o livro de padrões de projeto para aprender essas técnicas de desenvolvimento.

Eu to querendo pular fora mas só saio qd aparecer uma coisa melhor… Sair pra ficar à toa é foda…

Pior q saí de uma empresa que utiliza EJB 3, struts, mvc implantadinho e etc

TUDO NA MAIS PERFEITA ORDEM… MALDITA ESCOLHA

Compre o Use a Cabeça! Padrões de Projeto. :joia:

Por que você fez isso?!?!?! Ganhar mais?! :roll:

Na verdade foi… A empres estava pagando um salário x e essa nova ofereceu 3x + ganho por produção.

Enchi os olhos na hora e nem quis saber… SE ARREPENDIMENTO MATASSE

Era melhor você ter ficado na outra empresa mesmo ganhando menos, mas em compensação você iria ganhar mais em conhecimentos (em tecnologias novas).

Hj eu vejo assim

Mas agora já era

PErdi o estágio e tenho q ficar nessa até arrumar outro

Bom, aqui temos o problema… poucos desenvolvedores e o líder tem a visão antiga das coisas… to tentando criar um projeto modelo, usando esse material: http://www.caelum.com.br/caelum/apostila/caelum-java-web-fj28.pdf

Dá uma olhada, achei muito interessante.

Boa sorte.

Obrigado pela dica…

Vc tb está com o problema com a sua empresa?