Ola bom dia pessoal,estou trabalhando em um projeto que utiliza MVC,DAO,JSF,Hibernate minha duvida é a seguinte,Quantas camadas possui meu Sistema?
MVC-3
DAO é uma camada?
O contexto de Persistencia do hibernate é uma camada?
Obrigada pessoal,aguardo respostas.
DAO é seu model do MVC, já o JSF é seu view e o hibernate faz parte do controller que processa as requisições feitas na view utilizando as regras do definidas no model, portanto três camadas.
No seu caso, o MODEL sera seu banco de dados, HIBERNATE é
o seu Controller e JSF e’ sua VIEW …
Portanto, 3 camadas.
Não, não.
O JSF faz o papel de view e de controller nesse caso. Hibernate, DAOs, tudo isso pertence ao seu model. O modelo é tudo aquilo que representa o estado da sua aplicação. Porém, com isso não dá pra saber quantas camadas seu sistema possui.
Ultimamente ( graças ao Phillip Calçado ), a seguinte frase tem sido repetida como um mantra aqui no GUJ: MVC != CAMADAS!
Principal fonte: http://fragmental.com.br/wiki/index.php?title=MVC_e_Camadas
Abraços
:arrow: :arrow:A língua portuguesa é muito traiçoeira para certas definições. Uma delas é a tradução para “design patterns”, que fica “padrões de projeto”. Na lingua inglesa, “pattern” significa um modelo que se pode segui-lo ou imitá-lo, mas a palavra “padrão”, na nossa língua, está mais próxima de “standard” na língua inglesa, que significa um conjunto de métricas que confere qualidade. Com isso as pessoas encaram “design patterns” como se fosse “design standards”, fazendo com que as pessoas o utilizem demasiadamente achando que com isso se está garantindo qualidade.
Camadas é outra palavra traiçoeira. Tanto “tier” quando “layer” significam camada na nossa língua, porém, tier é uma divisão interprocessos ou intermáquinas, enquanto layer é simplesmente uma divisão lógica no sistema (ou seja, eu posso ter vários layers em um único tier).
Considerando isso acima, posso afirmar com toda certeza que seu sistema tem três tiers: um tier é o browser do usuário, outro tier é o “war” no seu servidor de aplicações, e o último tier é a base de dados.
Entretanto, não posso dizer ao certo quantos layers seu sistema possui, principalmente porque arquitetos adoram subdividir em demasia o tier “do meio”, mas posso lhe dar algumas orientações:
:arrow: Não confunda MVC com camadas (tier ou layer), são coisas meio distintas. No seu caso, a VIEW são as páginas, o CONTROLLER são o faces-config.xml, os managed beans e o servlet que processa requisições Faces, e o MODEL é todo o resto, incluindo DAOs e contexto de persistência.
:arrow: DAO é considerado um layer.
:arrow: O contexto de persistência é algo que é invisível à sua aplicação. Não sei dizer ao certo, mas não o consideraria uma layer.
:arrow: Hibernate não tem nada a ver com controller, ele processa objetos de domínio, ou seja, do model.
É isso.
Excelente explicação do Leonardo3001.
Mto Obrigada pela explicacao pessoal :lol: bjos.
Olá a todos,
pra mim uma camada existe para desempenhar um papel bem definido dentro da aplicação, como por exemplo persistir os objetos de negócio de um sistema, ou realizar a integração com outros sistemas legados, etc. Cada uma dessas camadas pode ser composta por um ou mais componentes que vão trabalhar juntos para atender os objetivos da mesma.
Acredito que a maioria dos sistemas cai naquela definição clássica de 3 camadas: Apresentação, Negócio e Persistência e que eu vejo é que existem muitas tecnologias, frameworks, patterns, etc. para serem utilizados no desenvolvimento das camadas. Struts, JSF, Swing e SWT são exemplos de tecnologias para desenvolvimento da Apresentação, enquanto Hibernate, XStream e TopLink são para a persistência… há inúmeros outros exemplos que se eu for citar vou passar o dia todo :?
Na verdade nem sei o quanto esses conceitos de camadas mudaram/evoluiram… alguém pode comentar sobre esses conceitos que falei ?
Não. DAO é um padrão que vive dentrod a Camada de Persistência.
seuparada como o Leonardo3001 em português a plvr camadas serve para explicar a msm coisa que tier e layer, a diferença entre eles é simples tier são separações fisicas e layer são separações logicas.
ex.: na sua aplicação vc pode ter um servidor de HTTP(ApacheHTTP) para receber as chamadas em um tier um Servidor de Aplicação(Tomcat) q seria nosso segundo tier e um bancoDados em outro servidor separado isso eu chamaria de 3tier um exemplo mais comum é vc desenvolvendo tomcat+banco 2tier que podem estar no msm maquina.
Agora com MVC estamos falando de layer’s inicialmente separamos em três camadas se falarmos da arquitetura/padrão MVC e para por ai 3layer.
Os frameworks em geral fazem a parte Viem e Controller agora o Model é vc que trabalha e ai pode ter N layer na sua aplicação
ex.: na Classe que recebe os parâmetros do JSP(ex. Action do struts uo bean do JSF) vc pode usar um Delegate para acessar os Hibernate/DAO/TopLink/repositorio só ai vc tem 5layer JSP>controler>Action>delegate>percistencia, esse layer são infra-estrutura, dominio do negocio, camadas da aplicação entende…
Resumindo se vc fala de MVC temos três camadas o resto da salada é camadas da aplicação q geralmente estão dentro de model(MVC).
abr
MVC e Camadas são coisas diferentes. MVC não implica em Camadas, Camadas não implica em MVC.
sim, camadas não são MVC, mas em MVC nós sempre vamos encontrar camadas nem que sejam duas como Java Swing…
[quote]Agora com MVC estamos falando de layer’s inicialmente separamos em três camadas se falarmos da arquitetura/padrão MVC e para por ai 3layer
[/quote]
eu só usei como exemplo uma vez que estávamos falando camadas (tier e layer)
[quote=baudamix]sim, camadas não são MVC, mas em MVC nós sempre vamos encontrar camadas nem que sejam duas como Java Swing…
[/quote]
Não. Eu posso não ter qualquer divisão em Camadas e ter MVC. Muita gente cria aplicações em Swing assim, aliás, com os XxxModel da vida que fazem consultas ao banco, executam regras de negócio e escrevem log ao mesmo tempo. VOcê ainda tem um Model só que ele não está numa Camada de Negócios como se esperaria.
Calçado,
então segundo as conversas que se seguiram, a idéia de camadas que falei anteriormente está no caminho correto ?!
Sim, exceto que o XStream serve para muito mais que persistência.
É? Eu dúvido você provar isso.
Mais ainda: provando eu te mando por correio uma perna e um braço.
realmente esse exemplo do fnandos não ficou muito legal… mas voltando àquela definição de antes: um componente não é uma camada! uma camada, eventualmente pode ser formada por apenas um componente, ou seja, não dá pra dizer que o DAO é uma camada, hibernate é outra e etc. E nesse seu exemplo é muito provável que o DAO e o Hibernate trabalhem juntos na mesma camada.
E acho válida uma consulta a esse link da wikipedia sobre mvc para esclarecer os conceitos: http://en.wikipedia.org/wiki/Model-view-controller#Java
Estes dias tive a felicidade (!) de participar de um flame - que jurava que, o professor dele (ph.d., arquiteto, etc.) dizia que camadas == MVC e que, como MVC é dividida em tres letras, existiam em todos sistemas 3 camadas.
que fique claro, mvc é um padrão arquitetural que demonstra como as partes da sua aplicação se comunicam. As camadas são a divisão do seu projeto, podendo variar de 3 … (normalmente 4) para N.
Seriam: apresentação, controle, aplicação, persistência, etc.
MVC realmente não implica em camadas, mas no mínimo em uma separação em 3 partes com resposnsabildiades distinas. Essas 3 partes podem estar na mesma camada, mas via de regra quase todo framework ou arquitetura coloca V e C na camada de apresentação e M na camada de negócio ou persistência.
[quote=horacio_barros]No seu caso, o MODEL sera seu banco de dados, HIBERNATE é
o seu Controller …[/quote]
É serio isso mesmo? Onde você leu isso? :shock: