Primeiramente Feliz ano novo a todos do forum. Estive pesquisando sobre VO(TO), BO,DAO e me deparei com algumas duvidas.
Value Object (VO) sao objetos que sao transmitidos de camada por camada? Eles possuem metodos get e set de suas propriedades?
Business Delegate (BO) sao os mesmos que VO porem com logica de negocio incluido?
Com base nisso os meus DAO`s simplemente possuem logica de banco?
Seguindo isso tudo digamos que a minha classe Cliente seria assim:
class ClienteVO {
private String nome;
private Endereco;
// get e set do mesmo
}
class ClienteBO {
// os mesmos atributos e get e set do VO so que agora com logica de negocio
}
class ClienteDAO {
private void inserir(ClienteVO cliente) {
}
}
Isso tudo pode ser usado em aplicacao Swing ou Web…
Primeiramente: não existe VO (objeto de valor) e BO (objeto de negógio), o que existe é “O” (objeto)! E este O possui atributos e métodos numa unidade só, e não há, necessariamente correlação entre atributos e getters/setters.
Com relação a acesso a dados, existe JPA/Hibernate (ou JPA/TopLink, se achar preferível) que gerencia a manipulação de dados no BD. É um pouco incompatível com a idéia do DAO clássico, que gerencia o CRUD de objetos de domínio, pois no Hibernate, só há a preocupação de gerenciar o estado attach/detach, e a transação.
[quote=Leonardo3001]Primeiramente: não existe VO (objeto de valor) e BO (objeto de negógio), o que existe é “O” (objeto)! E este O possui atributos e métodos numa unidade só, e não há, necessariamente correlação entre atributos e getters/setters.
Com relação a acesso a dados, existe JPA/Hibernate (ou JPA/TopLink, se achar preferível) que gerencia a manipulação de dados no BD. É um pouco incompatível com a idéia do DAO clássico, que gerencia o CRUD de objetos de domínio, pois no Hibernate, só há a preocupação de gerenciar o estado attach/detach, e a transação.
Ou seja, não leve essas letrinhas muito a sério.[/quote]
[quote=omaisnormalbaba]Primeiramente Feliz ano novo a todos do forum. Estive pesquisando sobre VO(TO), BO,DAO e me deparei com algumas duvidas.
Value Object (VO) sao objetos que sao transmitidos de camada por camada? Eles possuem metodos get e set de suas propriedades?
[/quote]
Existem dois padrões chamados Value Object
Value Object : Objecto que contém apenas um valor. Exemplo: Date, Integer, String , etc…
Value Object : sinónimo de Transfer Object : objecto contruido para transportar dados entre nodos (máquinas diferentes)
para 1 sim, eles são trasmitidos de camada em camada. para 2 não. Ele pertence apenas a uma camada: A de infraestrutura encarregue de enviar os dados à outra máquina e vice-versa.
para 1 não. Normalmente não possuem get e set , mas podem conter métodos especiais para transformar o valor em outros tipos: Por exemplo, Integer tem um intValue() para pegar o valor como um int.
para 2 depende da implementação. Em tese não precisa. apenas um atributo com visibiidade de pacote é suficiente. E o objeto encarregue da trasmissão pode ler e escreve resses atributos sem usar get/set. não ha razão para encapsular os atributos, neste caso.
Primeiro vc está confundindo Business Delegate com Business Object. São coisas diferentes.
busines delegate é um objeto que está no cliente e delega operações para o servidor. Ele esconde a forma como a delegação é feita. (RMI, WebService, etc…) O business Object contém regras de negocio a serem aplicadas a entidades do sistema.
Nem um , nem outro são iguais a VO. Não têm get/set. Ele contém metodos de negocio. Por exemplo:
class Loja {
void vende (Pedido p , Cliente c){
pedido.setCliente(c);
Fiscla fiscal = new Fiscal();
NotaFiscal nf = fiscal.gerNotaFiscal(p);
Dao dao = new Dao();
dao.persist(nf);
dao.persist(p);
}
}
}