Bom, andei ouvindo uns comentarios sendo carregados com os ventos, e não sei se isso já é pratica antiga, realidade de mercado ou não tem nada á ver, mas, como vocês tem desenvolvido sua camada de persistência?
Ela está direta na aplicação ou está em um projeto diferente? Porque o que eu vi, se a sua camada está em um projeto diferente, é possível que duas aplicações, por exemplo, uma WEB e uma DESKTOP, acessem a mesma camada,
E se isso tem sido prática, me desculpem a ignorancia, mas, como vocês integram os dois projetos?
Distribuir ou não uma aplicação em n projetos é uma decisão de arquitetura e está relacionado ao tamanho do projeto, estudo de escalabilidade e a real necessidade dessa distribuição.
No caso de classes de negócio disponibilizadas a n projetos, uma das tecnologias mais empregadas e o EJB.
Tanto no eclipse como no netbeans é possivel vc incluir um projeto como dependencia…no maven é possivel configurando o projeto como um artefato de dependencia. O interessante é que o maven ja gera o jar do projeto com todas as dependencias.
No eclipse lah aonde vc configura as libs do seu projeto tem uma opção de projects reference…onde vc especifica os projetos ao qual o seu projeto depende.
[quote=leonardobhbr]É interessante separar a camada de persistência em outro projeto sim!
No eclipse vc pode ir na propriedade do seu projeto principal e ir em project references e amarrar um outro projeto ao seu.
E depois e só gerar um jar de seu projeto onde tem as entidades do banco de dados e pode ser usada em qualquer projeto
Voce acha interresante apenas se for utilizado EJB ?
[/quote]
Não, citei o EJB apenas como referência, principalmente porque o uso dele deve ser bem analisado devido ao custo/benefício. Como disse, depende muito do projeto ou projetos envolvidos.
O paulo1911 mesmo fez uma consideração muito importante que é o uso do maven para atrelar projetos na forma de dependências e que de fato é uma ótima tecnologia.
Com certeza isso é uma boa prática pois você consegue até reaproveitar o seu modelo para outras aplicações, dependendo do caso.
Eu tenho trabalhado desta forma no Eclipse e além de referenciar um projeto no outro, você pode adicioná-lo no Build Path para que ele seja exportado para outros projetos (quando tem um projeto que depende de outro projeto que depende de outro projeto …).
Além disso, também pode adicioná-lo no “Deployment Assembly” (versão Helios do Eclipse) para que ele seja colocado dentro do WAR/EAR da sua aplicação web automaticamente como um JAR na hora que você exportar sua aplicação.
Mas é mais importante antes de pensar na solução pensar tb na evolução da solução…
Nenhuma solução pode ser a 100% definitiva, vamos lembar que na concepção dos engenheiros de software incluindo os lendarios da Antiga Sun…
20% do trabalho está na elaboração da solução e 80% nas melhorias dela…
Quando vc vai contruir uma casa vc já faz o alicerce de modo que permita alterações e expansao de acordo com uma possivel necessidade futura…depois que vc levantar as paredes da casa vc nao vai mais conseguir ajustar os alicerces com tanta facilidade…não é impossivel mas tb não será facil…
Perder uma semana configurando ambiente e definindo a arquitetura mais adiante no decorrer do projeto vai ser um ganho…
Eu já fiz parte de alguns projetos críticos, arquitetura pesada e servidores em cloud.
A maior necessidade era a de separar o business do front end. Cada um em um cloud.
Nunca cresceram. Depois de pronto acabaram.
Mas minha opinião tbm é essa. A maioria dos projetos tendem a crescer (se for bom).
Como sempre, separe sua aplicação em módulos. Um módulo Web deve conter aquilo que é específico da Web (JSF, Servlets, Struts Actions, etc.). O resto (a camada de negócio) deve ser empacotado em módulos EJB ou módulos utilitários (JAR), dependendo da sua tecnologia.
Acho que ele coloca automaticamente, mas é bom dar uma conferida na parte “Deployment Assembly” nas propriedades do projeto (Eclipse Helios - última versão).
Sim, quando o Eclipse faz o build, ele automaticamentte atualiza todos os projetos e as referências também. Então fica tudo sincronizado.
Mas é bom tomar cuidado que as vezes rola uns problemas de sincronização, principalmente com o JBoss.
De vez em quando ir lá na view Servers, clicar com o botão da direita no servidor e dar um “Clean” pode resolver. Já perdi alguns dias por causa de problema de refresh do Eclipse.
Cara, só complementando a discussão. Para gerenciar as dependências externas e inter dependências entre os módulos do projeto o que tem se usado mais atualmente é o Maven. Alguns desenvolvedores ainda são relutantes em usar o maven, mas por falta de conhecimento do mesmo. O maven é uma solução completa, não só pra o gerenciamento de dependencias e dos módulos do seu projeto como vários outros aspectos do seu projeto.
Vale muito a pena usar Maven. Não deixe de usar por falta de conhecimento. As aplicações modernas todas estão com Maven, frameworks como spring, hibernate, etc… todos usam Maven.
Mas a questão não era sobre o gerenciamento das dependências, e sim sobre os aspectos que envolvem a separação da camada de persistência do projeto principal.
Sei que levantei o tópico de 2011 mas não é pq o tópico é de alguns meses atrás que a informação não é importante. De qualquer forma, o tópico foi sobre separar a camada de persistencia em outro módulo e se observar bem trata tb de como gerenciar e organizar as inter-dependencias entre os mesmos. Muito se falou de recursos do própio eclipse, e de outros formas de se fazer mas ninguem tratou do que de fato se está usando hoje em toda a comunidade java que é o Maven. Quem não usa, é pq não conhece.