JavaBean no MVC

Aê galera,

Confesso que procurei no fórum algo a respeito mas não achei…

Suponha que eu tenha um javabean CarrinhoDeCompras. Numa aplicação simples sem nenhum framework mas ainda assim utilizando MVC Model 2, este javabean é minha regra de negócios…

Mas eu posso adicionar métodos como “calcularTotal()” ou “quantidadeDeItens ()” ao mesmo ?

Os javabeans não podem ter APENAS métodos acessores (getters e setters) ?

OBRIGADO !!!

Eu utilizaria outro objeto para fazer estas operações, mas se neste seu bean estão contidas as regras do seu sistema acho que não faria diferença vc colocar ai mesmo.

Mas sei lá, é como eu faria.

Flws

[quote=_pto]Aê galera,

Confesso que procurei no fórum algo a respeito mas não achei…

Suponha que eu tenha um javabean CarrinhoDeCompras. Numa aplicação simples sem nenhum framework mas ainda assim utilizando MVC Model 2, este javabean é minha regra de negócios…

Mas eu posso adicionar métodos como “calcularTotal()” ou “quantidadeDeItens ()” ao mesmo ?

Os javabeans não podem ter APENAS métodos acessores (getters e setters) ?

OBRIGADO !!!

[/quote]

JavaBean Segue as seguintes especificações:

* implemente a interface java.io.Serializable (que possibilita a persistência e restauração do estado do objeto da classe);
* possua um construtor sem argumentos;
* que as suas propriedades sejam acessíveis através de métodos "get" e "set", seguindo um padrão de nomenclatura;
* possa conter qualquer método de tratamento de eventos.

Cara para ficar mais organizado…nesse caso, teu javabean serviria…de DTO…para trafegar entre as camadas… eu os colocaria separado. e criava uma camada contendo classes so pra regras de negocio.
Assim

[code]packge br.com.sun.model.beans

public class Venda implements Serializable {

public Integer codigo;
public Double valorVenda;

public Venda()
{
}

gettes and setters…

}[/code]

[code]package br.com.sun.model.business

public class VendaBusiness implements IVendaBusiness {

public Double calcularTotal(Venda venda)
{
while(){}…
}

}

[/code]

Pelo que vc tah me falando, Vendas seria um DTO ou VO e VendasBusiness seria um BO.

Um DAO teria a estrutura parecida com o Vendas mas com anotações por exemplo pra indicar o mapeamento ??

Não se você estiver usando Mapeamento Objeto Relacional, o mapeamento nao é feito no DAO, e sim no Bean.

Exatamente!.

Quando eu programava em C# fiz uma aplicação onde eu coloquei os metodos de negocio…junto com os objetos de valores. o seja, onde fica os atributos encapsulados…seria a caixa preta.

Fizeste o BO implementar uma interface…Isto é só uma boa prática (re-uso de código) ou uma convenção (todo BO tem que implementar uma interface) ??

da uma lida nesse artigo, acho que pode explicar muita coisa pra vc: http://fragmental.com.br/wiki/index.php?title=Evitando_VOs_e_BOs

[quote=_pto]Fizeste o BO implementar uma interface…Isto é só uma boa prática (re-uso de código) ou uma convenção (todo BO tem que implementar uma interface) ??

[/quote]

Interface é verdadeiro sinômimo de HERANÇA. em C++ você poderia herdar de mais de uma classe. no JAVA isso não seria possivel se não exisitisse as interfaces, que fazem esse trabalho muito bem.

Interface gera um contrato com a classe. onde a classe é obrigada a implementar todos metodos da interfaces.

Interface não é uma implementação é um especificação.

Portanto, _pto: Isto é uma boa prática de fato, e também permiti você implementar polimorfismo, porque se você tiver uma Interface chamada Pessoa por exemplo. você pode criar uma classe chamada Cliente e outra Classe chamada funcionario, onde um Cliente é uma Pessoa, e um Funcionário é uma Pessoa (Herança). ou seja, uma Pessoa pode se comportar como um Cliente ou como Um Funcionário(Polimorfismo)

[code] IPessoa cliente = new Cliente();

IPessoa funcionario = new Funcionario();[/code]

Não separa seus objetos de negócio em classes de atributo e classes de negócio, valorize a orientação a objetos. Evite o modelo anêmico. http://martinfowler.com/bliki/AnemicDomainModel.html