Padrões de Projeto: fábrica com múltiplos objetos de conexão a bancos de dados
Boa tarde, senhores.
Estou alterando um framework para que vários bancos de dados possam ser acessados em uma mesma sessão de trabalho.
Ele é oriundo de Java, utiliza fábricas abstratas e métodos de fábricas.
Em sua versão original, acessa um único banco de dados e as classes de negócio da camada DAO são especializadas conforme o engine (ADO, BDE, DBX...). Já estou mudando isto, de modo que a classe de negócio não seja vinculada a um engine.
Um de meus clientes possui várias lojas. Periodicamente, precisa carregar dados de cada uma delas: vários bancos de dados com a mesma estrutura. Hoje são MS-Access com ADO, amanhã serão Firebird com ADO ou DBX. Os parâmetros para conexão são obtidos a partir de arquivos de configurações (.ini).
O novo framework, então, precisa ser capaz de permitir a manipulação de n (ene) bancos de dados em uma mesma sessão de trabalho. A informação de qual banco de dados foi selecionado partirá da camada de apresentação, será passada à camada de negócios e chegará à camada de acesso a dados. Pergunta-se:
Qual a melhor forma de trafegar a informação entre as camadas?
Uma opção é acrescentar ao DTO (objeto de transferência de dados) uma propriedade correspondente à origem dos dados: seu valor seria o nome da fábrica. O objeto de negócios usaria esta propriedade para ativar um objeto da fábrica adequada.
Esta não é uma opção convencional, mas me parece prática e, até onde analisei, não fere as boas práticas de arquitetura. Por isto agradeço comentários e sugestões.
Estou alterando um framework para que vários bancos de dados possam ser acessados em uma mesma sessão de trabalho.
Ele é oriundo de Java, utiliza fábricas abstratas e métodos de fábricas.
Em sua versão original, acessa um único banco de dados e as classes de negócio da camada DAO são especializadas conforme o engine (ADO, BDE, DBX...). Já estou mudando isto, de modo que a classe de negócio não seja vinculada a um engine.
Um de meus clientes possui várias lojas. Periodicamente, precisa carregar dados de cada uma delas: vários bancos de dados com a mesma estrutura. Hoje são MS-Access com ADO, amanhã serão Firebird com ADO ou DBX. Os parâmetros para conexão são obtidos a partir de arquivos de configurações (.ini).
O novo framework, então, precisa ser capaz de permitir a manipulação de n (ene) bancos de dados em uma mesma sessão de trabalho. A informação de qual banco de dados foi selecionado partirá da camada de apresentação, será passada à camada de negócios e chegará à camada de acesso a dados. Pergunta-se:
Qual a melhor forma de trafegar a informação entre as camadas?
Uma opção é acrescentar ao DTO (objeto de transferência de dados) uma propriedade correspondente à origem dos dados: seu valor seria o nome da fábrica. O objeto de negócios usaria esta propriedade para ativar um objeto da fábrica adequada.
Esta não é uma opção convencional, mas me parece prática e, até onde analisei, não fere as boas práticas de arquitetura. Por isto agradeço comentários e sugestões.
José Silva
Curtidas 0