"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > As condições de consulta complexa devem ser tratadas no mapeador de dados ou na camada de serviço?

As condições de consulta complexa devem ser tratadas no mapeador de dados ou na camada de serviço?

Publicado em 2024-11-18
Navegar:803

Should Complex Query Conditions Be Handled in the Data Mapper or the Service Layer?

Como lidar com condições de consulta complexas: mapeador de dados vs. camada de serviço

Ao lidar com condições de consulta complexas na programação orientada a objetos, há Existem duas abordagens principais: lidar com eles no mapeador de dados ou na camada de serviço.

Abordagem do mapeador de dados

Os dados O padrão mapper é usado para mapear objetos de domínio de e para um banco de dados. No contexto de tratamento de condições, o mapeador de dados pode ter um método get() genérico que aceita uma lista de condições. Por exemplo, se quisermos recuperar livros por autor, poderíamos chamar BookDataMapper->get(['author' => 'John Doe']).

No entanto, se quisermos usar múltiplas condições que exigem Para uma consulta complexa, como encontrar livros por autor e editora, poderíamos expandir o método BookDataMapper->get() para analisar as condições. Alternativamente, poderíamos criar um novo método como BookDataMapper->getByAuthorAndPublisher().

Abordagem da camada de serviço

A camada de serviço é responsável por lidar com a lógica de negócios do aplicativo . Ele pode atuar como intermediário entre o controlador e o mapeador de dados. No caso de lidar com condições de consulta complexas, a camada de serviço poderia chamar diretamente os métodos mais específicos do mapeador de dados, como BookService->getByAuthorAndPublisher(). Essa abordagem reduziria a camada de serviço a apenas um intermediário.

Comparação de abordagens

A abordagem do mapeador de dados mantém as condições dentro do mapeador de dados, o que pode levar à lógica condicional vazando dos objetos do domínio. Por outro lado, a abordagem da camada de serviço mantém a lógica do domínio dentro da camada de serviço, tornando-a mais modular.

Em última análise, a escolha entre essas abordagens depende dos requisitos específicos da aplicação. Se a lógica do domínio for relativamente simples e as consultas complexas não forem frequentes, a abordagem do mapeador de dados pode ser suficiente. No entanto, se a lógica do domínio for complexa ou as consultas complexas forem frequentes, a abordagem da camada de serviço pode ser mais apropriada.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3