Sistema rodando EJB + Hibernate / Client Server + Hibernate

6 respostas
carlos.macleod

Olá pessoal, estou com um sério problema de arquitetura.

Finalizei a modelagem das classes de meu projeto. Inicialmente pretendia trabalhar apenas em uma aplicação desktop, mas quero também que minha aplicação possa rodar com algumas outras tecnologias como EJB + Servlet + JavaFX, EJB + JSP +JSF

Estou meio perdido com relação a que abordagem adotar. Algumas coisas eu já tomei por óbvias, como o fato de utilizar Hibernate ao invés de Entity Beans, mas meus 2 grandes problemas são:

1 - Como conciliar a minha aplicação de forma que possa rodar tanto Enterprise como Client / Server ?

2 - Como costurar Hibernate + EJB ( de forma que a costura não prejudique a aplicação CS, como dito acima )

Acredito que o mínimo comum que eu preciso para ambas as plataformas seria DAO + Hibernate + Minhas classes de negócio

Tá difícil conciliar…

Alguém por aí já se aventurou em fazer isso ?

6 Respostas

A

É amigo,

acho que precisa de um arquiteto… :roll:

carlos.macleod

Taz:
É amigo,

acho que precisa de um arquiteto… :roll:

===(o_O)==>

Andei dando uma olhada no EJB3. Consegui fazer uma aplicação com Hibernate Annotations e Entity Manager funcionar stand-alone.

Agora pretendo fazer os session beans acessarem os DAOs. Vem agora outras dúvidas:

A classe anotada como @Entity precisa daquela tralha toda do EJB antigo para ser transportada ( como era com o session bean - implementar aquelas interfaces doidas ) ?

Tem que implementar alguma interface além do serializable ?

Li um livro de EJB e agora com o EJB3 tomei um choque… parece que é tudo diferente ( mais fácil ), mas muito diferente a ponto de nao aproveitar quase nada do que eu li.

A

Não precisa, trafegue seus próprios Entitys para camadas superiores.

Depende, é mais provável que vc implemente interfaces que estejam relacionadas ao seu domínio de negócio.

Acho que não. Por debaixo dos panos a coisa funciona do jeito antigo, então é bom que vc saiba como era antes.

carlos.macleod
Consegui o que eu queria. Estou usando um Session Bean Stateless para acessar as classes mapeadas.

 que não é suficiente para mim ainda, pois quero acessar as classes StandAlone com hibernate ( core, annotations e entity manager ). A minha aplicação é de varejo, e nem todos os donos de loja vão possuir estrutura para um application server.

Estava pensando no seguinte: Utilizar um DAO para fazer o CrUDe, e o Session Bean iria acessar o DAO (Os metodos crude do bean acessando os métodos crude do DAO).

Isso separaria a regra de negócio do session bean, e assim, teria apenas DAO + Classes Anotadas para chamar na aplicação Stand Alone.

O que acha ?

faelcavalcanti

Talvez seria interessante você utilizar uma camada intermediaria, tipo o Service Locator + Business Delegate da GoF, em que você estaria deixando a camada de serviço(negócios) isenta de qualquer particularidade de comunicação com qualquer outra aplicação, mais especificamente através de uma interface para diminuir este acoplamento.

Estou vendo que você terá trabalho, pois trata-se de uma infra-estrutura que necessita de bastante flexibilidade de acordo com o perfil do cliente.

carlos.macleod

Interessante, vou pesquisar a respeito deste pattern.

Exatamente, é o que me dá mais dor de cabeça: Deixar felizes gregos e troianos.

Acredite, a parte que vai me dar mais trabalho será o PDV ( Ponto de Venda ), pois deverá ter a opção de trabalhar desconectado do resto da aplicação. Penso em utilizar DB4O para guardar as transações offline ( Os sistemas que tenho visto no mercado utilizam se de arquivos texto, mas acho isso coisa do passado )

Abraços,

Carlos MacLeod

Criado 16 de agosto de 2007
Ultima resposta 28 de ago. de 2007
Respostas 6
Participantes 3