Onde implementar as Regras de Negócio?

Pessoal!

Pergunta que não quer calar: ONDE IMPLEMENTAR AS REGRAS DE NEGÓCIO?

Onde trabalho (ambiente WEB) temos a seguinte arquitetura:

Modelo MVC, onde:

VIEW: somente JSP com algumas validações javascript, e alguns componentes (ex: listagem).

ACTION: É A LETRA “C” (CONTROLLER) do modelo MVC? AQUI QUE É IMPLEMENTADA AS REGRAS DE NEGÓCIO ou somente tratamento das requisições e redirecionamentos?

MODEL: É A LETRA “M” (MODELO) do modelo MVC? OU AS REGRAS DE NEGÓCIO DEVE SER IMPLEMENTADAS AQUI?

Temos também:

DTO: que é o espelho das tabelas (cada tabela tem seu respectivo DTO)

FORM: representar o Formulário

DAO: nossa camada de persistencia

RESUMINDO:

JSP faz uma requisição para a ACTION que por sua vez captura os dados do Form, carrega os respectivos DTO´s e chama um método na MODEL (ex: listarCliente) que vai em uma DAO respectiva (que faz todo o acesso ao Banco). A DAO retorna para a MODEL que retorna para a ACTION que faz o devido redirecionamento.

A Dúvida é: Onde implementar as REGRAS DE NEGÓCIO?

Ex: Se eu tenho que adicionar uma informação a mais (que não está no banco) em uma combo-box, onde devo implementar? na ACTION ou na MODEL?

Um simples if é uma REGRA DE NEGÓCIO?

Escrevi demais…

Cara vo te falar em cima do JSF

VIEW

Fica o que vai integari com a jsp, no caso o que recebe e respode…
Classe BEAN
Classe POJO
por exemplo…

MODELO

Aqui fica as classes e interfaces para acessar o banco
Classe HibernateDAO
Classe JDBCDAO

CONTROL

Aqui fica o controle de tudo…
no caso do JSF, aqui geralmente fica o Facade que e o cerebro da aplicacao, ele que pega dados da Classe Bean e manda pra as classes Dao…
Classe Facade

basicamente isso…

A pagina jsp se comunica com o Bean, o Bean comunica com o Facade e o Facade se comunica com o DAO…
as execoes tb sao tratadas no Facade…

Cara, sob sua análise… BEAN = ManagedBean e Classe POJO = “QQer classe”???

Esqueci, usamos o STRUTS…

ah certo…
a classe pojo e onde fica os objeto, os dados da classe.
tipo

public class Pessoa{

String nome
String senha
String login

gets e sets

Nos objetos de negócio :smiley: (Não é xxxBO pelo amor de Deus)

Seus objetos de negócio devem estar na camada de domínio e serão acessados pela sua “action” de alguma forma, seja diretamente, seja por uma Service Layer/Application Layer.

View: apresentação, interface direta com o usuário/camada cliente.

Controller: trata dos eventos entre a View e o Model, têm o controle de fluxo de dados.

Model: regras de negócio, acesso à banco, e outros recursos.

[quote=Franclayton]Pessoal!

Pergunta que não quer calar: ONDE IMPLEMENTAR AS REGRAS DE NEGÓCIO?

Onde trabalho (ambiente WEB) temos a seguinte arquitetura:

Modelo MVC, onde:

VIEW: somente JSP com algumas validações javascript, e alguns componentes (ex: listagem).

ACTION: É A LETRA “C” (CONTROLLER) do modelo MVC? AQUI QUE É IMPLEMENTADA AS REGRAS DE NEGÓCIO ou somente tratamento das requisições e redirecionamentos?

MODEL: É A LETRA “M” (MODELO) do modelo MVC? OU AS REGRAS DE NEGÓCIO DEVE SER IMPLEMENTADAS AQUI?

Temos também:

DTO: que é o espelho das tabelas (cada tabela tem seu respectivo DTO)

FORM: representar o Formulário

DAO: nossa camada de persistencia

RESUMINDO:

JSP faz uma requisição para a ACTION que por sua vez captura os dados do Form, carrega os respectivos DTO´s e chama um método na MODEL (ex: listarCliente) que vai em uma DAO respectiva (que faz todo o acesso ao Banco). A DAO retorna para a MODEL que retorna para a ACTION que faz o devido redirecionamento.

A Dúvida é: Onde implementar as REGRAS DE NEGÓCIO?

Ex: Se eu tenho que adicionar uma informação a mais (que não está no banco) em uma combo-box, onde devo implementar? na ACTION ou na MODEL?

Um simples if é uma REGRA DE NEGÓCIO?

Escrevi demais…[/quote]

1 - DTO não é “espelho” de tabelas
2 - vc não rpecisa de um FORM ( a não ser que seja um tosco-form do struts1.x
3 - Eliminar ao máximo regras de negócio na view.
4 - Não entendi quando vc diz que “A DAO retorna para a MODEL”
5 - Sim, suas regras de negócio ficam no model, se vc prefere pensar assim.

Bom leia o que o Shoes escreveu sobre MVC e Camadas talvez possa ajudar, ele explica a diferença e o papel de cada um no projeto
MVC e Camadas

[quote=Tecnoage][quote=Franclayton]Pessoal!

Pergunta que não quer calar: ONDE IMPLEMENTAR AS REGRAS DE NEGÓCIO?

Onde trabalho (ambiente WEB) temos a seguinte arquitetura:

Modelo MVC, onde:

VIEW: somente JSP com algumas validações javascript, e alguns componentes (ex: listagem).

ACTION: É A LETRA “C” (CONTROLLER) do modelo MVC? AQUI QUE É IMPLEMENTADA AS REGRAS DE NEGÓCIO ou somente tratamento das requisições e redirecionamentos?

MODEL: É A LETRA “M” (MODELO) do modelo MVC? OU AS REGRAS DE NEGÓCIO DEVE SER IMPLEMENTADAS AQUI?

Temos também:

DTO: que é o espelho das tabelas (cada tabela tem seu respectivo DTO)

FORM: representar o Formulário

DAO: nossa camada de persistencia

RESUMINDO:

JSP faz uma requisição para a ACTION que por sua vez captura os dados do Form, carrega os respectivos DTO´s e chama um método na MODEL (ex: listarCliente) que vai em uma DAO respectiva (que faz todo o acesso ao Banco). A DAO retorna para a MODEL que retorna para a ACTION que faz o devido redirecionamento.

A Dúvida é: Onde implementar as REGRAS DE NEGÓCIO?

Ex: Se eu tenho que adicionar uma informação a mais (que não está no banco) em uma combo-box, onde devo implementar? na ACTION ou na MODEL?

Um simples if é uma REGRA DE NEGÓCIO?

Escrevi demais…[/quote]

1 - DTO não é “espelho” de tabelas
2 - vc não rpecisa de um FORM ( a não ser que seja um tosco-form do struts1.x
3 - Eliminar ao máximo regras de negócio na view.
4 - Não entendi quando vc diz que “A DAO retorna para a MODEL”
5 - Sim, suas regras de negócio ficam no model, se vc prefere pensar assim.[/quote]

Opa!
Estou cheio de dúvidas!

1 - o que seria um DTO então?
2 - como utilizo Struts não tenho que utilizar Form? JSP sem Form?
3 - minha view não tem regra de negócio, somente html
4 - Model acessa a DAO. Na DAO acesso o banco (ex: um select que adiciono a uma collection) e a DAO retorna essa collection para a Model que por sua vez retorna para a Action
5 - Procuro fazer as regras de negócio na Model, onde vc sugere?

1 - DTO é um objeto para agregar dados que serão transmitidos via rede para outra máquina. Isso é para diminuir a quantidade de objetos trafegando na rede.

3 - Bom

4 - É estranho falar que Model acessa DAO já que o DAO é apenas um dos componentes da Model, mas está certo.

5 - Regras de negócio começam a partir do momento que os dados entram na Model e terminam quando os dados a deixam. Mas isso não significa que tudo é negócio. Preocupe-se em separar as responsabilidades.

Implemente suas regras de negocio em uma engine de regras :smiley: