Camada de Persistência: Direto na Aplicação ou em um Novo Projeto?

E aew pessoal!

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?

Valew!

Pergunta interessante…

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.

É 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 ?

Olá amigo,

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.

Espero ter ajudado.

Fallow

[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.

Bom saber. Obrigado gente.

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.

Como já disseram, depende de cada aplicação.
Ter todo um trabalho pra fazer isso não necessariamente é a melhor forma!

Hj em dia vc deve pensar na solução, não em tudo q tem de melhor, pq pode ser mais trabalhoso.

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…

Fica aqui minha opinião…

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.

Valew galera, discussão esclarecedora!

Agora a questão é:

Se eu fizer isso, o projeto referenciado vai ser exportado no meu WAR?
E se o projeto referenciado for modificado, o eclipse pega essas modificações?

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.

Da uma olhada nesse artigo http://www.guj.com.br/content/articles/maven/maven_2_guj.pdf

Abraço.

Nuoooosa, cara, você levantou um tópico de 2011…

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.

Abraço cara.