Como separar as camadas  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
joshh
Debugger

Membro desde: 28/03/2010 17:08:19
Mensagens: 52
Offline

Gostaria de saber como separar as camadas...

Tenho a entidade que é o Empregado, e esse empregado tem o EmpregadoManager, que grava o mesmo no banco.

Agora as regras de negócio eu teria que criar o EmpregadoRN certo?

Como ficaria essa classe? Ela somente alteraria dados do objeto que passei como parametro? E caso necessite verificar as disciplinas que este empregado tera de lecionar este ano eu teria de criar uma classe EmpregadoFacade, para buscar as metrias e gravar na tebela de EmpregadosMaterias?
icarocd
JavaBaby
[Avatar]

Membro desde: 12/04/2006 21:46:54
Mensagens: 92
Offline

joshh wrote:Gostaria de saber como separar as camadas...

Tenho a entidade que é o Empregado, e esse empregado tem o EmpregadoManager, que grava o mesmo no banco.

Agora as regras de negócio eu teria que criar o EmpregadoRN certo?

Como ficaria essa classe? Ela somente alteraria dados do objeto que passei como parametro? E caso necessite verificar as disciplinas que este empregado tera de lecionar este ano eu teria de criar uma classe EmpregadoFacade, para buscar as metrias e gravar na tebela de EmpregadosMaterias?


Por que nao manter suas regras nas proprias classes de dominio? afinal é assim que a OO diz. sobre persistencia, seria tambem igualmente possivel e limpo manter nas classes de dominio, mas uma solucao via repository ou dao´s, ou ainda injecao via AOP nas classes dominio, sao boas ideias.
No que se baseou para nomear a classe de persistencia como 'EmpregadoManager'? OBS: seguir uma linguagem comum e padronizada facilita a comunicacao do seu time, e.g. padrao de nomenclatura adotado por padroes de projeto consolidados.

Engenheiro de Computação com ênfase em Engenharia de Software pela UEFS/BA
SCJP & SCWCD certified
Desenvolvedor com ênfase Java/JEE/JSE/Grails
[Email] [WWW] [MSN]
joshh
Debugger

Membro desde: 28/03/2010 17:08:19
Mensagens: 52
Offline

Peguei o projeto andando, e foi assim que denomiram as classe... Estou tentando arrumar as coisas.

Como esta hoje é o seguinte:

Package Model:



Package Service eu tenhos Managers. Seria o DAO no caso, Não?


A minha duvida toda surgiu pois tenho as Regras de Negócio no Facade...
icarocd
JavaBaby
[Avatar]

Membro desde: 12/04/2006 21:46:54
Mensagens: 92
Offline

Para lógica que se refira a uma entidade de negócio apenas ou a ela e entidades dependentes, podes usar o bom senso de manter tal lógica na entidade, mas para aquelas mais elaboradas que envolvam mais entidades, acessos a banco e etc, pode concentrar em services. Se a forma como você está usando Facade for esta, ok, mas você também tem controllers ou por acaso está misturando o que é tratamento de requisições com facades? Se sim à ultima pergunta, tente isolar o que é negocio em services, do que é controle em controllers.

Engenheiro de Computação com ênfase em Engenharia de Software pela UEFS/BA
SCJP & SCWCD certified
Desenvolvedor com ênfase Java/JEE/JSE/Grails
[Email] [WWW] [MSN]
joshh
Debugger

Membro desde: 28/03/2010 17:08:19
Mensagens: 52
Offline

Veja se estou certo:

EmpregadoFacade.java



EmpregadoObjetosRN.java




Esta correto? Controller chama o facade atraves do ManagedBean ao clicar em um botão na tela... Facade Chamas as Regras de Negócio e a regra de negócio busca no banco e apos grava. Caso fosse um cadastro básico sem Regra de Negócio eu não teria o Facade e o RN e utilizaria o Manager direto para gravar. Estou no caminho certo?
icarocd
JavaBaby
[Avatar]

Membro desde: 12/04/2006 21:46:54
Mensagens: 92
Offline

Não vi sentido em segmentar as lógicas de negócio nas camadas de entidade + RN + facade. Não te parece suficiente encaixar todas as regras de negocio possiveis nas suas entidades, e aquelas que nao couberem entram numa camada secundaria de negocio, que no caso é um service ou um facade?
Em resumo: no seu exemplo nao parece necessario haver tanto seus RN quanto seus facades

Engenheiro de Computação com ênfase em Engenharia de Software pela UEFS/BA
SCJP & SCWCD certified
Desenvolvedor com ênfase Java/JEE/JSE/Grails
[Email] [WWW] [MSN]
joshh
Debugger

Membro desde: 28/03/2010 17:08:19
Mensagens: 52
Offline

Haviam me falado para que no model
Classes @Entity somente deveria ficar os dados referentes a tabela do banco de dados. O manager somente quando necessario realizar consultas com base de dados ou gravar. E as regras de negócio no Facade. Caso eu precisasse por exemplo pegar dados de uma tabela, analisar e com o resultado gravar determinado item em outra. Continua muito confuso para mim.
j0nny
GUJ Master
[Avatar]

Membro desde: 19/09/2009 00:01:57
Mensagens: 1121
Localização: Blumenau - SC
Offline

joshh wrote:Haviam me falado para que no model
Classes @Entity somente deveria ficar os dados referentes a tabela do banco de dados. O manager somente quando necessario realizar consultas com base de dados ou gravar. E as regras de negócio no Facade. Caso eu precisasse por exemplo pegar dados de uma tabela, analisar e com o resultado gravar determinado item em outra. Continua muito confuso para mim.


Desse modo vc estaria programando estruturado.
Pra que ter objetos burros que só carregam dados e não sabem nem o que fazer com eles?
Mantenho minhas lógicas na própria entidade, agora quando uma regra trabalha com mais de uma entidade, separo em um Service.

@jntsdaniel
github.com/jonatasdaniel

---

AndOrm - Framework ORM para Android
http://github.com/jonatasdaniel/andorm
[WWW]
joshh
Debugger

Membro desde: 28/03/2010 17:08:19
Mensagens: 52
Offline

Algumas regras fazem sentido adicionar a entidade, porém quando eu necessitar realizar uma mais complexa por exemplo:

Ao Gravar um tela(entidade x) devo atualizar várias tabelas filhas e adicionar novos registros. Após adicionado esses registros, devo obter todos as todas as entidades y que estão vinculadas entidade x. Após obter estes registros devo atualizar uma outra série de tabelas referentes a tabela Y e seus filhos. A dúvida vem a ser, devo implementar todas essas chamadas na Implentação do Facade ou devo criar uma classe de regras de negócios para cada entidade, para percorrer a determinada lista e então gerar os registros necessários?
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team