Pessoal, gostaria saber como que vcs usam os nomes de classes em aplicações jsf. tipo os nomes das classes de value object e de managedBeans.
num cenario de cadastro de cliente onde o value object cliente é usado em varios lugares da aplicacao.
Com JSF eu não uso VO pois você pode enviar sua classe para a tela e exibir tudo lah. Mas se for criar um VO para desacoplar, coloca ClienteVO que você será feliz. [=
mauricioadl
legal o modo que vc usa, estou usando algo parecido.
JSF + MB -> Controlam apenas dados exibidos nas telas, dialogs e textos. Não existe regra de negócio alguma.
Façade -> regras de negócio, processamentos e outras coisas
DAO -> regras das consultas (HQLs), e CRUD apenas. Não existe regra de negócio alguma.
Eu gosto dessas camadas pois fica tudo bem desacoplado e mais propenso a mudanças. [=
Com JSF eu não uso VO pois você pode enviar sua classe para a tela e exibir tudo lah. Mas se for criar um VO para desacoplar, coloca ClienteVO que você será feliz. [=
Por que você usa interface e implementação? Teria um exemplo?
Com JSF eu não uso VO pois você pode enviar sua classe para a tela e exibir tudo lah. Mas se for criar um VO para desacoplar, coloca ClienteVO que você será feliz. [=
Por que você usa interface e implementação? Teria um exemplo?
Padrão de projeto. Sempre programe para interface.
Sua implementação fica menos acoplada, mais fácil de ser alterada, e no caso de EJB você já está com a interface pronta para ser enviada ao cliente.
Com JSF eu não uso VO pois você pode enviar sua classe para a tela e exibir tudo lah. Mas se for criar um VO para desacoplar, coloca ClienteVO que você será feliz. [=
Por que você usa interface e implementação? Teria um exemplo?
Padrão de projeto. Sempre programe para interface.
Sua implementação fica menos acoplada, mais fácil de ser alterada, e no caso de EJB você já está com a interface pronta para ser enviada ao cliente. ;)
Cara, na boa, isso fica redundante demais. O princípio de programar para interface não quer dizer que você tem que escrever uma interface para todos os tipos do seu sistema, signfica apenas que um objeto que usa uma classe não deve conhecer detalhes de implementação. Por exemplo, a sua classe de regra de negócio deve usar o DAO sem saber se ele sua JPA ou JDBC puro, mas se a sua aplicação não tem a perspectiva de suportar múltiplos provedores de persistência isso fica redundante.
Hebert_Coelho
rmendes08:
Cara, na boa, isso fica redundante demais. O princípio de programar para interface não quer dizer que você tem que escrever uma interface para todos os tipos do seu sistema, signfica apenas que um objeto que usa uma classe não deve conhecer detalhes de implementação. Por exemplo, a sua classe de regra de negócio deve usar o DAO sem saber se ele sua JPA ou JDBC puro, mas se a sua aplicação não tem a perspectiva de suportar múltiplos provedores de persistência isso fica redundante.
Não vejo desse modo. [=
Poderia criar um factory onde você retorna apenas a interface do DAO sem precisar espalhar a implementação pelo seu código, ou a instanciação do mesmo.
Eu já li muitos livros falando isso cara e toda vez que precisei mudar meu sistema para polimorfismo, a mudança foi bem mais simples.
É gosto. [=
rmendes08
jakefrog:
rmendes08:
Cara, na boa, isso fica redundante demais. O princípio de programar para interface não quer dizer que você tem que escrever uma interface para todos os tipos do seu sistema, signfica apenas que um objeto que usa uma classe não deve conhecer detalhes de implementação. Por exemplo, a sua classe de regra de negócio deve usar o DAO sem saber se ele sua JPA ou JDBC puro, mas se a sua aplicação não tem a perspectiva de suportar múltiplos provedores de persistência isso fica redundante.
Não vejo desse modo. [=
Poderia criar um factory onde você retorna apenas a interface do DAO sem precisar espalhar a implementação pelo seu código, ou a instanciação do mesmo.
Eu já li muitos livros falando isso cara e toda vez que precisei mudar meu sistema para polimorfismo, a mudança foi bem mais simples.
É gosto. [=
Veja bem, não estou dizendo que desacoplar classes é ruim. Mas também não dá para escrever factories e interfaces para toda e qualquer classe do sistema. Isso é interessante quando você precisa comunicar camadas diferentes por exemplo, existem situações em que isso faz sentido e em outras situações o custo não compensa.
gRoOve
jakefrog você utiliza interface para todas as classes ou somente quando há a necessidade “na hora”?
Já que você tocou no assunto da interface da DAO, estou justamente com um problema relacionado a isso, no sistema que estou desenvolvendo criei uma classe DAO para cada classe Modelo (ClienteDAO, CarroDAO), ocorre que estou tendo que replicar todo o mesmo código(CRUD básico) por todas essas classes). O que eu poderia fazer neste caso? Consigo resolver somente com GenericDAO? Uma interfaces poderia ajudar em algo?
rmendes08
gRoOve:
jakefrog você utiliza interface para todas as classes ou somente quando há a necessidade “na hora”?
Já que você tocou no assunto da interface da DAO, estou justamente com um problema relacionado a isso, no sistema que estou desenvolvendo criei uma classe DAO para cada classe Modelo (ClienteDAO, CarroDAO), ocorre que estou tendo que replicar todo o mesmo código(CRUD básico) por todas essas classes). O que eu poderia fazer neste caso? Consigo resolver somente com GenericDAO? Uma interfaces poderia ajudar em algo?
Nesse caso, é interessante concentrar as funcionalidades comuns em um DAO genérico sim. Mas se você está usando JDBC puro esse trabalho pode ser bastante árduo, você vai acabar gastando mais tempo fazendo o DAO genérico do que a aplicação propriamente dita. Esse sim é um caso onde o uso de interfaces é interessante, assim o seu sistema fica flexível o suficiente para suportar refatorações na camada de persistência sem maiores traumas.
gRoOve
No momento estou utilizando a especificação JPA com implementação Hibernate para persistência.
Pra fazer o GenericDAO, ficaria mais ou menos assim:
class GenericDAO
class PessoaDAO extends GenericDAO
class CarroDAO extends GenericDAO
Seria interessante utilizar interface neste caso também?
Estou aprendendo a trabalhar com interfaces, não consigo visualizar a utilização numa “mudança” futura no sistema.