Arquitetura

4 respostas
D

Pessoal desculpe sou novato aqui se esse não for o lugar certo para postar…

Estou a aprender sobre design Pattern e como usa-lo no dia dia, minha duvida é a seguinte…

Aqui na empresa temos um sistema ECommerce na qual temos a seguinte estrutura.

BLL
DAL
DTO

Simplesmente a BLL recebe dados da UI que por sua vez delega pra DAL sei que isso é longe de uma arquitetura certa por isso estou aqui.

No nosso caso quando o cliente realiza a compra a gente pega o id dele e faz algumas regras como: se ele tem desconto, se ele tem desconto a cada 30 dias , e outros tipos de desconto, ai depois realizamos o insert.

O problema é que quem faz isso é a BLL ou seja, vou na Dal só para buscar informações e na BLL dou uns 4 a 5 inserts em varias tabelas, sei que isso nao é certo, então peço-lhes vossa ajuda para decompor as classes porque eu entendo pouco sobre pattern.

4 Respostas

fantomas

Oi danielxxx,

Por um acaso BLL é o tal do BO (Business Object) ? e DAL é o DAO (Data Access Object)?

[]'s

vinny767

Estranho isso…

D

Opa, entao seria isso mesmo, só que eu nao sei como desacopolar isso exemplo.

suponhamos que um cliente esteja em uma tela de pedidos ele adiciona itens ao carrinho e ao clicar no botao para finalizar eu faço isso.

1º) Tenho uma classe venda que recebe os dados do usuario, ve se esta tudo ok com os parametros fornecidos.
2º) Esssa classe tem um metodo fecharCompra, o metodo fechar compra instancia uma outra classe Dal que efetua a inserção na tabela, apos esse metodo fecharCompra eu preciso cadastra em outra tabela o codigo do usuario , data da compra etc… e outras coisas, com isso eu acabo fazendo um monte de inserts e updates em varias tabelas, e ainda sem transação, se eu chamo varios metodos ao mesmo tempo como vou saber se o 1º deu certo e o ultimo deu erro, eu teria que voltar tudo roolback…

Não sei se deu pra entender pessoal, é que sou novato e ta dificil entender e separar responsabilidades.

victor.godinho

... DAL = DAO. :lol: haha

Pô... ficar dando receita? Mas enfim... você pode fazer o seguinte (fica bem simples e vai atender a essa sua regra):

Implementa um DAOFactory
Faça o DAOFactory compartilhar a conexão entre as instancias de DAO que ele criar
Crie métodos de manipulação da Transação nele!

E pronto...

Exemplo tosco de como funcionária, com a visão dessa sua classe Venda:
...
DAOFactory daoFactory = DAOFactory.getInstance();
daoFactory.beginTransaction();

VendaDAO vendaDAO = daoFactory.getVendaDAO();

try {
     vendaDAO.comprar(...);
     vendaDAO.vender(...);


     daoFactory.commit();
} catch(Throwable t) { // Não faça isso!! hahaha
     daoFactory.rollback();
}
....

Falows

Criado 5 de agosto de 2008
Ultima resposta 5 de ago. de 2008
Respostas 4
Participantes 4