none
Queria Saber se isso é uma má prática... RRS feed

  • Pergunta

  • Bom ultimamente eu tenho me viciado nisso....

    Todo novo sistema que eu crio e que ele use um banco de dados relacional...eu to fazendo o seguinte pra criar as classes....

    praticamente todas as tabelas geram uma classe....
    por ex: um banco de dados de países e estados.....
    gerariam 2 classes....
       a classe estado... tem um campo que eh da classe País...
    e a classe país tem um campo que é uma lista de todos os estados q tem ele como país: +- assim

    Public Class Pais
            Public Cod As Integer
            Public Nome As String
            Public Estados As List(Of Estado)
        End Class
        Public Class Estado
            Public Cod As Integer
            Public Nome As String
            Public Pais As Pais
        End Class


    so que tudo encapsulado...com propiedades etc..


    depois eu crio uma classe que eu chamo de "Manager" ... que eh onde ficam todos os objetos... ex:

    Public Paises as Dictionary(of Integer, Pais)
    Public Estado as Dictionary(of Integer, Estado)


    e nessa classe onde vc tem acesso direto a qualquer objeto atraves do seu COD....
    exemplo:  myManager.Paises(55) retorna "BRASIL" que é objeto do tipo País que na tabela Paises possui o Cod = 55
    e dentro dessa classe que estao todos os metodos para editar deletar e Cadastrar novos objetos no banco de dados....

    e essa classe Manager... so existe um referencia a ela dentro de um modulo...
    ou seja ela eh global e so tem uma instancia dela,,,
    De qualquer lugar do sistema... eu posso usar essa classe para pegar os objetos


    e por ultimo...o que eu acho que pode parecer bem estranho...
    é a forma de como os dados sao lidos....
    a classe manager quando é criada....
    ela le todo o banco de dados....e gera todos os objetos pra ser guardada dentro dela...
    ou seja ... quando eu tento pegar o pais que tem o Codigo 55...
    eu uso um isso ... myManager.Paises(55) ....
    so que ao invez de ele fazer uma consulta SQl na tabela Paises....
    ele ja pega direto o objeto Pais que tem o codigo 55 que ta dentro da classe ja...

    entao qualquer dado que eu precisar... ele nao faz consulta SQL... ele ja pega direto no objeto myManager
    eu so usaria de novo alguma consulta SQL... quando fosse metodos de editar,deletar ou cadastrar dados....


    ...............................................
    de repente ficou meio baguncado a explicacao... mas é que eu to curioso pra saber se oq eu faço eh muito ruim... ou nem tanto...
    por que se for...eu ja posso tentar lergar esse vicio e tentar criar minhas classes de outra maneira

    desde ja grato
    quarta-feira, 23 de dezembro de 2009 02:19

Respostas

  • Não acredito que seja má prática. Porém você deve analisar bem o contexto em que sua aplicação se encaixa.
    Se você parar pra pensar, por um lado suas consultas ganham velocidade, pois não precisam ir até o banco de dados a cada consulta, por outro lado, você mantém toda a sua base de dados em memória durante o tempo em que sua aplicação está sendo executada.
    A questão é, se sua base começar a crescer isso pode ser tornar inviável.
    Acho que você deve analisar tudo isso na fase inicial do projeto, na análise, para não ter problemas no futuro.

    Espero ter ajudado.
    Até a próxima.
    Abraços.

    quarta-feira, 31 de março de 2010 00:55

Todas as Respostas

  • Não acredito que seja má prática. Porém você deve analisar bem o contexto em que sua aplicação se encaixa.
    Se você parar pra pensar, por um lado suas consultas ganham velocidade, pois não precisam ir até o banco de dados a cada consulta, por outro lado, você mantém toda a sua base de dados em memória durante o tempo em que sua aplicação está sendo executada.
    A questão é, se sua base começar a crescer isso pode ser tornar inviável.
    Acho que você deve analisar tudo isso na fase inicial do projeto, na análise, para não ter problemas no futuro.

    Espero ter ajudado.
    Até a próxima.
    Abraços.

    quarta-feira, 31 de março de 2010 00:55
  • A sua arquitetura ta bem legal.

    Porém oq o Guilherme falou é valido, deve verificar a memória disso tudo. Poderia melhorar isto e implantar um esquema de cache, onde vc pode passar um parametro dizendo se pode permanecer em cache ou não. Dai vc usari apenas para os objetos que são consultados bastante vezes e que não são muito grandes.


    Se sua pergunta foi respondida por favor marque a resposta como certa.
    sexta-feira, 9 de abril de 2010 23:11