Agrupamento de classes em 3 camadas ou MVC?

Ola Pessoal,

vou desenvolver uma aplicação intranet usando struts e hibernate. Vou utilizar 3 camadas e MVC.

Estou criando minhas classes mas estou com duvidas sobre qual seria a melhor forma de agrupar minhas classes.

  • Criação de packages: Devo organizar minhas classes em packages pensando no MVC ou em 3 camadas ou nos dois? Ex.:

caso 1
package com.meuProjeto.mvc.view - *.jsp
package com.meuProjeto.mvc.controller - todos os action,actionform
package com.meuProjeto.mvc.model - todas as entidades, entidadesDAO
o hibernate ficaria dentro da model?
ou

caso 2
package com.meuProjeto.camadas.apresentacao - *.jsp
package com.meuProjeto.camadas.negocio - entidades
package com.meuProjeto.camadas.persitencia - entidadesDAO
aonde entraria todos os action,actionform ???
o hibernate ficaria dentro de persistencia?

ou

caso 3
package com.meuProjeto.mvc.view - *.jsp
package com.meuProjeto.mvc.controller - todos os action,actionform
package com.meuProjeto.mvc.model.negocio - entidades
package com.meuProjeto.mvc.model.persistencia - entidadesDAO
o hibernate ficaria dentro de persistencia?
ou

outro caso?

Espero que possam me ajudar. :smiley:

Abraços!

Você quer colocar JSP´S em pacotes que ficarão classes Java? Se sim isso estaria errado, ai guardaria se servlets.
JSP´s ficam dentro de pastas comuns. Dentro de sua pasta WEBAPPS vc cria uma pasta e sub-pastas para seus JSP´s.
Sobre a estruturação vc deve ter em mente como vai definir suas classes java. Eu aconselharia começar do modelo, onde será definido o modelo para o banco de dados e depois vai organizando. Outra coisa, JSF já trabalha com MVC até onde eu saiba. Se vc estiver utilizando ele pode tirar isso da sua estruturação de pacote deixando assim. Aliás pode tirar isso de qualquer outro framework e até de JSP e Servlets

package com.meuProjeto.view package com.meuProjeto.controller

A minha estrutura está definido da seguinte forma, lembrando que uso JSF:

package br.com.meuprojeto.bean; // para meus MB´s package br.com.projetobase.dao; // meus dao´s package br.com.projetobase.dao.utility; //minha classe utilitaria do hibernate. package br.com.projetobase.exceptions; //minhas exceções. package br.com.projetobase.modelo; //meu modelo, é neste pacote q crio as classes q serão espelhos do BD. package br.com.projetobase.teste; // como o próprio nome já diz aqui está minhas classes de testes.

Espero de alguma forma ter ajudado.

É verdade, me equivoquei mas sempre achei que a camada view ou apresentação fosse jps´s, html´s etc. Entao eu nao considero uma pagina jsp que tenha um formulario uma view?

Lembrando que utilizarei struts 1.

package br.com.meuProjeto.view.action - seriam as classes que recebe a requisicão do usuario?

package br.com.meuProjeto.controller - se os action vao na view, entao oque vai no controller?

sua estrutura:

package br.com.meuprojeto.bean; // para meus MB´s - aqui seriam as classes que tem - nao entendi essa
package br.com.projetobase.dao; // meus dao´s - DAO´s para cada entidade contendo seus metodos de manipulação de dados na tabela
package br.com.projetobase.dao.utility; //minha classe utilitaria do hibernate. - oque teria aqui?
package br.com.projetobase.exceptions; //minhas exceções. - ok
package br.com.projetobase.modelo; //meu modelo, é neste pacote q crio as classes q serão espelhos do BD. - seriam as entidades com seus getters e setters (jb)?
package br.com.projetobase.teste; // como o próprio nome já diz aqui está minhas classes de testes. - ok

obrigado pela ajuda até aqui…

Bem realmente os htmls e jsp´s estão como apresentação para o usuário, mas não é colocado em pacotes que ficarão as classes java.

package br.com.meuProjeto.view.action - seriam as classes que recebe a requisicão do usuario?
package br.com.meuProjeto.controller - se os action vao na view, entao oque vai no controller?

Acho que vc pode definir segundo sua organização.

Sobre a minha estrutura:

package br.com.meuprojeto.bean; // para meus MB´s - aqui seriam as classes que tem - nao entendi essa

Isso seria para JSF, então pode esquecer.

package br.com.projetobase.dao; // meus dao´s - DAO´s para cada entidade contendo seus metodos de manipulação de dados na tabela

Correto!

package br.com.projetobase.dao.utility; //minha classe utilitaria do hibernate. - oque teria aqui?

E aqui onde eu pego a sessão do hibernate. Coloquei uma classe só para isso.

package br.com.projetobase.exceptions; //minhas exceções. - ok
package br.com.projetobase.modelo; //meu modelo, é neste pacote q crio as classes q serão espelhos do BD. - seriam as entidades com seus getters e setters (jb)?

Não sei com se definiria isso no Struts, mas resumindo, se eu tenho uma tabela Aluno eu terei nesse pacote uma classe Aluno com os mesmos atributos.

package br.com.projetobase.teste; // como o próprio nome já diz aqui está minhas classes de testes. - ok 

Pessoal

Fiz uma nova tentativa…
vejam como ficou:

br.com.robson.controller - Classes Action do struts. Aqui será todas as ações do usuario. Ex: ClienteAction.java

br.com.robson.modelo.negocio - Classes de relacionamento do sistema. Ex.: Cliente.java(somente propriedades do cliente. nome, tel etc…)

br.com.robson.modelo.persistencia - Classes de acesso a banco. Ex.: ClienteDAO.

br.com.robson.modelo.persistencia.util - Classe para fabricar conexao de bd. Ex.: ConnectionFactiory.java

A view são os JSP´s(formularios) que chamam action do struts