| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/10/2011 16:56:26
|
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?
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2011 07:43:52
|
icarocd
JavaBaby
![[Avatar]](/images/avatar/6acb084470c0a8bdf431d5427d1f29bc.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2011 08:12:12
|
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...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2011 11:16:21
|
icarocd
JavaBaby
![[Avatar]](/images/avatar/6acb084470c0a8bdf431d5427d1f29bc.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2011 11:42:46
|
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?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2011 14:04:44
|
icarocd
JavaBaby
![[Avatar]](/images/avatar/6acb084470c0a8bdf431d5427d1f29bc.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/10/2011 16:02:13
|
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.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/10/2011 07:04:06
|
j0nny
GUJ Master
![[Avatar]](/images/avatar/2f37ce1ace06a770fab4452db0fe5c5f.png)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/10/2011 17:55:15
|
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?
|
|
|
 |
|
|