Pergunta

Eu estava olhando para DataMapper , que apareceu à primeira vista, usar o padrão ActiveRecord ORM. Outras pessoas disseram que ele usa o DataMapper e / ou o padrão de objeto de domínio.

O que é a diferença entre esses padrões?

Foi útil?

Solução

A principal diferença entre os dois padrões é o seguinte:

  • No ActiveRecord você tem um objeto de domínio que tanto conhece toda a lógica de negócios e como salvar / atualizar-se no banco de dados, user.getLinkToProfile () e User :: find (1), User :: save (usuário)

  • No padrão DataMapper você tem um objeto de domínio que contém toda a lógica do negócio, para exmaple user.getLinkToProfile () (ou algo similar), mas sabe nada sobre o banco de dados em questão, para além disso você tem um mapeador de objeto que é responsável por salvar, atualização, seleção, etc. objetos de usuário do banco de dados que teriam UserMapper :: find (1), UserMapper.save (usuário)

DataMapper é potencialmente mais complexo, em seguida, ActiveRecord, mas é muito mais fácil de desenvolver o seu modelo de domínio e assíncronas de banco de dados, em seguida, com ActiveRecord.

Outras dicas

O Active Record é muito pesado, mapeador de dados e objeto de domínio estão se separando essas preocupações fora assim que você tem um conjunto mais definido de código fazendo vários aspectos para você "domínio" ou objetos "entidade".

Eu pessoalmente prefiro, não que você perguntou, indo com a separação em domínio objeto, mapeador de dados, provavelmente, usar um padrão de montagem e até mesmo um padrão de transferência de dados para assegurar uma separação clara do que acontece com os dados entre o banco de dados de uma das camadas superiores de uma aplicação.

... separações elegantes e simples sempre ajuda.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top