Pergunta

Já vi algumas perguntas semelhantes:

Você pode também, por favor me diga os contextos em que eles são usados? Ou o objetivo deles?

Foi útil?

Solução

JavaBeans

Um JavaBean é uma classe que segue as convenções JavaBeans , tal como definido pela Sun. Wikipedia tem um resumo boa bonita de que JavaBeans são:

JavaBeans são componentes de software reutilizáveis ??para Java que podem ser manipulados visualmente em uma ferramenta de construtor. Praticamente, eles são classes escritas na linguagem de programação Java em conformidade com uma convenção particular. Eles são usados ??para encapsular diversos objectos para um único objecto (a feijão), de modo que eles podem ser passados ??em torno de um único objecto de feijão, em vez de como vários objectos individuais. Um JavaBean é um objeto Java que é serializável, tem um construtor nullary, e permite o acesso a propriedades usando métodos get e set.

A fim de funcionar como uma classe JavaBean, uma classe de objecto deve obedecer a certas convenções de nomenclatura cerca método, construção, e comportamento. Estas convenções torná-lo possível ter ferramentas que pode usar, reutilizar, substituir e JavaBeans de conexão.

As convenções necessários são:

  • A classe deve ter um construtor público padrão. Isso permite fácil instanciação dentro editar e estruturas de ativação.
  • As propriedades da classe deve ser acessível usando get, set, e outros métodos (os chamados métodos de acesso e métodos modificadores), seguindo uma convenção de nomenclatura padrão. Isso permite a inspeção e atualização de estado de feijão dentro de quadros, muitos dos quais incluem editores personalizados para vários tipos de propriedades fácil automatizado.
  • A classe deve ser serializado. Isso permite que aplicativos e frameworks para confiável guardar, armazenar e restaurar o estado do feijão em uma forma que é independente da VM e plataforma.

Devido a esses requisitos são largamente expressa como convenções ao invés de interfaces de execução, alguns desenvolvedores visualizar JavaBeans como Plain Old Java Objects que acompanhamento específico convenções de nomenclatura.

POJO

Objeto A Plain Old Java ou POJO é um termo introduzido inicialmente para designar uma simples leve objeto Java, que não implementam qualquer interface javax.ejb, ao contrário de 2.x EJB pesado (especialmente Entity Beans, Beans de sessão sem estado não são assim tão mau IMO ). Hoje, o termo é usado para qualquer objeto simples com nenhum material extra. Mais uma vez, a Wikipedia faz um bom trabalho a definir POJO :

POJO é um acrônimo para Plain Old Java Objeto. O nome é usado para enfatizar que o objecto em questão é um ordinária objeto Java, não um especial objecto, e em particular não um Enterprise JavaBeans (especialmente antes EJB 3). O termo foi cunhado por Martin Fowler, Rebecca Parsons e Josh MacKenzie em setembro de 2000:

"Nós se perguntou por que as pessoas estavam tão contra o uso de objetos regulares em sua sistemas e concluiu que era porque objetos simples faltava uma fantasia nome. Por isso, deu-lhes um, e é pegou muito bem ".

O termo continua o padrão de termos mais antigos para as tecnologias que fazem Não use fantasia novas funcionalidades, tais como POTS (Plain Old Telephone Service) em telefonia, e vagens (Plain dados antigos Estruturas) que são definidas em C ++ mas usar apenas recursos de linguagem C, e POD (Plain Old Documentação) em Perl.

O termo tem mais provável ganhou aceitação generalizada por causa do precisa para uma comum e facilmente prazo compreendido que contrasta com estruturas de objetos complicado. UMA JavaBean é um POJO que é serializable, tem um sem argumentos construtor, e permite o acesso a propriedades usando Getter e Setter métodos. Um Enterprise JavaBeans não éuma única classe, mas um componente inteiro modelo (novamente, EJB 3 reduz o complexidade do Enterprise JavaBeans).

Como projetos usando POJOs tornaram-se mais comumente utilizado, os sistemas têm surgido POJOs dar algum do funcionalidade usada em estruturas e mais escolha sobre quais áreas do funcionalidade são realmente necessários. Hibernate e Spring são exemplos.

Valor objeto

Um valor dos objetos ou VO é um objeto, como java.lang.Integer que os valores de retenção (daí objetos de valor). Para uma definição mais formal, que muitas vezes se referem à descrição de Martin Fowler de valor dos objetos :

Em Padrões de Enterprise Application Architecture eu descrevi valor dos objetos como um pequeno objeto, como um objeto de intervalo dinheiro ou data. Sua propriedade chave é que eles seguem semântica de valor ao invés de semântica de referência.

Você pode geralmente dizer-lhes porque sua noção de igualdade não é baseada em identidade, em vez de dois objetos de valor são iguais se todos os seus campos são iguais. Embora todos os campos são iguais, você não precisa comparar todos os campos se um subconjunto é único -. Por exemplo, códigos de moeda para objetos de moeda são o suficiente para a igualdade de teste

Uma heurística geral é que objetos de valor devem ser inteiramente imutável. Se você quiser mudar um objeto de valor que você deve substituir o objeto com um novo e não ser autorizados a atualizar os valores do próprio objeto de valor -. Objetos de valor atualizáveis ??levar a aliasing problemas

literatura precoce J2EE utilizado o objeto de valor termo para descrever um conceito diferente, que eu chamo de um de transferência de dados objeto . Eles mudaram desde então sua utilização e usar o termo Transferência objeto .

Você pode encontrar mais algumas boas material sobre objetos de valor na wiki e por Dirk Riehle .

Transferência de Dados objeto

Dados objecto de transferência ou DTO é um (anti) padrão introduzida com EJB. Em vez de executar muitas chamadas remotas em EJBs, a ideia era encapsular os dados em um objeto de valor que podem ser transferidos através da rede: a transferência de dados de objeto. Wikipedia tem uma definição razoável de Transferência de Dados Objeto :

objecto de transfercia de dados (DTO), anteriormente conhecida como objectos de valor ou VO, é um padrão de desenho utilizado para transferir dados entre os subsistemas de aplicação de software. DTOs são muitas vezes utilizados em conjunto com acesso a dados objetos para recuperar dados de um banco de dados.

A diferença entre objetos de transferência de dados e objetos de negócios ou acesso a dados objetos é que um DTO não tem qualquer comportamento exceto para armazenamento e recuperação de seus próprios dados (assessores e modificadores).

Em uma arquitetura EJB tradicional, DTOs servem dois propósitos: primeiro, eles contornar o problema que os beans de entidade não são serializáveis; em segundo lugar, elas definem, implicitamente, uma fase de montagem, onde todos os dados a ser utilizado pelo ponto de vista é buscados e conduzidos os DTO antes de retornar o controlo para a camada de apresentação.


Assim, para muitas pessoas, DTOs e VOs são a mesma coisa (mas Fowler usa Vos algo média pessoa como vimos). Na maioria das vezes, eles seguem as convenções JavaBeans e são, portanto, JavaBeans também. E todos são POJOs.

Outras dicas

DTO vs VO

DTO - fortes objectos de transferência de dados são apenas recipientes de dados que são usados ??para transportar dados entre camadas e camadas.

  • Ele contém principalmente atributos. Você ainda pode usar atributos públicos sem getters e setters.
  • objetos de transferência de dados não contêm qualquer lógica de negócios.

Analogia:
simples formulário de registro com atributos nome de utilizador, senha e e-mail id.

  • Quando este formulário é enviado em arquivo RegistrationServlet você vai ter todos os atributos de camada vista a camada de negócios onde passam Os atributos de Java Beans e, em seguida, para a DAO ou a camada de persistência.
  • DTO de ajuda no transporte dos atributos da camada de visão para a camada de negócios e, finalmente, para a camada de persistência.

DTO foi principalmente utilizado para obter dados transportados através da rede de forma eficiente, pode ser até mesmo de JVM para outra JVM.

DTOs são muitas vezes java.io.Serializable -, a fim de transferir dados através JVM

.

VO - A Valor Object [1] [2] representa em si um conjunto fixo de dados e é semelhante a um Java enum. A identidade de um objeto de valor é baseado em seu estado, em vez de sua identidade de objeto e é imutável. Um exemplo do mundo real seria Color.RED, Color.BLUE, SEX.FEMALE etc.

POJO vs JavaBeans

[1] O Java-Beanness de um POJO é que seus atributos particulares podem ser acessados ??via getters públicas e setters que estejam em conformidade com as convenções JavaBeans. por exemplo.

    private String foo;
    public String getFoo(){...}
    public void setFoo(String foo){...}; 

[2] JavaBeans deve implementar Serializable e ter um construtor sem argumento, enquanto que em POJO não tem essas restrições.

Basicamente,

DTO:. "A transferência de dados objetos" podem viajar entre as camadas separadas na arquitetura de software

VO:. "Valor objetos" segurar um objeto, como Integer, dinheiro etc

POJO:. Plain Old objeto Java que não é um objeto especial

Java Beans: requer um Java Class para ser serializado, ter um construtor no-arg e um getter e setter para cada campo

Java Beans não são a mesma coisa que EJBs.

O JavaBeans especificação em Java 1.0 era Sun tentativa de permitir que objetos Java para ser manipulado em um IDE que parecia VB. Havia regras estabelecidas para objetos que qualificados como "Java Beans":

  1. Construtor padrão
  2. Getters e setters para membros de dados privados que se seguiram a convenção de nomenclatura adequada
  3. Serializable
  4. Talvez outros que eu estou esquecendo.

EJBs veio mais tarde. Eles combinam componentes e um modelo transacional distribuído, executado em um recipiente que administra tópicos, pooling, ciclo de vida, e fornece serviços. Eles estão muito longe de Java Beans.

DTOs surgiu no contexto Java porque as pessoas descobriram que a especificação EJB 1.0 era muito "tagarela" com o banco de dados. Ao invés de fazer uma ida e volta para cada elemento de dados, as pessoas iriam empacotá-los em Java Beans em massa e enviá-los ao redor.

POJOs eram uma reacção contra EJB.

POJO : É um arquivo java (classe) que não estender ou implementar qualquer outro arquivo java (classe).

Feijão : É um arquivo java (classe) em que todas as variáveis ??são privados, os métodos são getters públicas adequadas e setters são usados ??para acessar variáveis.

classe normal : É um arquivo java (classe) que pode consistir / / default privada / variáveis ??protegidas públicas e que pode ou não pode estender ou implementar outro arquivo java (classe).

primeiro falar sobre

normal Class - que de qualquer classe definem que é um normalmente em java de TI de forma a criar vários tipos de propriedades do método etc Bean -.. Bean é nada que seja apenas um objeto dessa classe em particular usando este feijão você pode acessar sua classe java mesmo como objeto

e depois que falar sobre último POJO

POJO - POJO é essa classe que não têm quaisquer serviços de TI de ter apenas um construtor padrão e propriedade privada e aqueles propriedade para definir um valor métodos setter e getter correspondente. É curto forma de objeto Plain Java.

  • Valor objeto :. Use quando necessidade de medir a igualdade com base nos objetos os objetos de valor
  • Data Transfer objeto :. Dados passagem com vários atributos em um tiro do cliente para o servidor através da camada, para evitar várias chamadas para servidor remoto
  • Plain Old Java Object : É como classe simples que propriedades, construtor público sem-arg. Como declaramos para a entidade JPA.

diferença-entre-valor-objeto-padrão-e-data-transfer-padrão

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