Qual é a diferença entre classe de negócio e classe de domínio? O que significa aulas persistentes?

Qual é a diferença entre classe de negócio e classe de domínio? O que significa aulas persistentes?

Author: jitter, 2009-11-04

5 answers

A domain class é uma classe do Domain Model que Martin Fowler descreve como se segue em padrões de Enterprise Application Architecture:

Um modelo objecto do domínio que incorpora tanto o comportamento como os dados.

alt text

Na sua pior lógica de negócios pode ser muito complexa. Regras e lógica descrevem muitos casos diferentes e traços de comportamento, e é essa complexidade que os objetos foram projetados para trabalhar. A Modelo de domínio cria uma rede de objetos interconectados, onde cada objeto representa algum indivíduo significativo, seja tão grande quanto uma corporação ou tão pequeno quanto uma única linha em uma forma de ordem.

E para mim, não há diferença com uma classe de Negócio : um objecto de negócio não executa mais ou menos lógica de negócio do que um objecto de domínio (um modelo de domínio onde a lógica de negócio é implementada fora do domínio objectos é chamado de um modelo de domínio anémico , que é um termo pejorativo), objectos de domínio e objectos de Negócio são a mesma coisa.

Finalmente, uma classe persistente é uma classe que pode ser... persistiu, o que significa transferir uma representação em memória de informações para um armazenamento físico que persistirá além da vida da JVM. Muitas vezes, a persistência é implementada usando uma base de dados (mas esta não é a única solução, veja por exemplo prevalência de objetos). As operações típicas de persistência incluem criar, ler, atualizar e excluir que são conhecidas como operações CRUD. Objetos de domínio são muito frequentemente persistentes, i. e. Você pode realizar operações CRUD sobre eles através de uma API que esconde os detalhes subjacentes do motor de persistência escolhido.

 29
Author: Pascal Thivent, 2017-02-08 14:16:55

Uma classe" domínio " é aquela que modela os seus dados. É normalmente usado para mapear dados de sua loja de dados (por exemplo, um banco de dados) para um objeto em memória. Uma classe de negócio é uma que a sua aplicação trabalha com. Ele pode ser o mesmo que a classe domínio, e geralmente executa algum tipo de lógica de negócios ou processamento.

Persistência refere-se à capacidade do Estado do objeto para ser salvo em algum armazenamento de dados (por exemplo, xml, um arquivo de texto, ou mais comumente, um banco de dados). Assim, o estado deste tipo de objeto "persiste" se a aplicação está em execução ou não.

Parece-me que estás curioso sobre o Mapeamento Objeto/Relacional. Eu recomendo a leitura deste artigo da Wikipédia para começar.
 12
Author: Kevin Babcock, 2009-11-04 14:56:05

Os Termos Business e Domínio são frequentemente utilizados sinónimos. Pessoalmente, prefiro os Termos Modelo de domínio, objecto do domínio , etc. uma vez que não são obrigados a lidar com os negócios ([2]} (o que quer que seja).

Como exemplo, emonde trabalhamos principalmente com identidade baseada em reivindicações e autorização. Os conceitos que modelamos têm muito pouco em comum com o tradicional "negócio", então nesses casos, eu acho que Modelo de domínio é um termo mais apropriado.

 3
Author: Mark Seemann, 2009-11-04 14:59:11

Uma classe de Negócio fornece lógica específica ao Domínio.

Uma classe de domínio é uma entidade que representa parte do domínio.

Uma classe persistente, ou melhor, uma instância persistente, tem os mesmos dados após a reinicialização do servidor (os dados são normalmente armazenados em um banco de dados de algum tipo).

Vamos tomar uma transacção bancária como exemplo. Você teria uma classe de domínio persistente Account. O meu Account (uma instância) teria um campo Balance com Valor 1000.

A transacção a lógica empresarial que lida com o débito é algo como AccountDebit e tem como método debitAccount(Account account, int amount), e como lógica empresarial

int balance = account.getBalance();
if (balance < amount) {
   throw exception("You're too poor");
}
balance = balance - amount;
account.setBalance(balance);
account.commit(); // save the values to persistent store

E eu sei que o dinheiro normalmente não é um int, e que o montante debitado é normalmente creditado a outra pessoa:)

 2
Author: extraneon, 2015-02-16 03:40:23

As classes de Negócio são classes concebidas e utilizadas para projectos específicos e dificilmente reutilizáveis para outros projectos.

As classes de domínio são classes que são concebidas e usadas para domínios específicos que podem ser usadas por vários projectos que fazem coisas semelhantes.

Por exemplo, as classes JDBC são classes de domínio para acesso a bases de dados. As classes Swing são classes de domínio para a construção e manipulação de GUI. Form1 que contém um conjunto de componentes utilizados para mostrar "Hello World" messsage é classe executiva.

 -4
Author: NawaMan, 2009-11-04 14:56:28