Vimos algumas perguntas semelhantes:
- Qual é a diferença entre um JavaBean e um POJO?
- Qual é a diferença entre POJO (objeto Java antigo simples) e DTO (objeto de transferência de dados)?
Você também pode me dizer os contextos em que eles são usados? Ou o objetivo deles?
Respostas:
JavaBeans
Um JavaBean é uma classe que segue as convenções do JavaBeans, conforme definido pela Sun. A Wikipedia tem um resumo muito bom do que são JavaBeans :
POJO
Um Objeto Java Antigo Simples ou POJO é um termo introduzido inicialmente para designar um objeto Java simples e leve, sem implementar nenhuma
javax.ejb
interface, em oposição ao EJB 2.x pesado (especialmente Entity Beans, Stateless Session Beans não são tão ruins para IMO). Hoje, o termo é usado para qualquer objeto simples, sem itens extras. Novamente, a Wikipedia faz um bom trabalho ao definir o POJO :Objeto Valor
Um objeto de valor ou VO é um objeto como
java.lang.Integer
esse que mantém valores (portanto, objetos de valor). Para uma definição mais formal, costumo me referir à descrição de Martin Fowler do Value Object :Objeto de transferência de dados
O Data Transfer Object ou DTO é um (anti) padrão introduzido no EJB. Em vez de executar muitas chamadas remotas nos EJBs, a idéia era encapsular dados em um objeto de valor que pudesse ser transferido pela rede: um objeto de transferência de dados. A Wikipedia tem uma definição decente de objeto de transferência de dados :
Portanto, para muitas pessoas, DTOs e VOs são a mesma coisa (mas Fowler usa VOs para significar outra coisa como vimos). Na maioria das vezes, eles seguem as convenções do JavaBeans e, portanto, também são JavaBeans. E todos são POJOs.
fonte
class SomeClass { public String foo;public String bar; }
dentro de uma classe com muita lógica complicada, com certeza não é um JavaBean, não pode ser um VO, pois é mutável, poderia ser um DTO? apesar de não ser direcionado para invocações remotas de qualquer tipo. Pode ser considerado um POJO?DTO vs VO
DTO - Objetos de transferência de dados são apenas recipientes de dados usados para transportar dados entre camadas e camadas.
O DTO foi usado principalmente para obter dados transportados pela rede de maneira eficiente, podendo ser da JVM para outra JVM.
Os DTOs geralmente são
java.io.Serializable
- para transferir dados pela JVM.VO - Um Objeto de Valor [1] [2] representa um conjunto fixo de dados e é semelhante a uma enumeração Java. A identidade de um objeto de valor é baseada em seu estado e não em 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 todos os seus atributos privados são acessados por meio de getters e setters públicos que estão em conformidade com as convenções do JavaBeans. por exemplo
[2] O JavaBeans deve implementar Serializable e ter um construtor sem argumento, enquanto no POJO não há essas restrições.
fonte
Basicamente,
DTO: "Objetos de transferência de dados" podem viajar entre camadas separadas na arquitetura do software.
VO: "Objetos de valor" contêm um objeto como Inteiro, Dinheiro etc.
POJO: Objeto Java antigo simples que não é um objeto especial.
Java Beans: requer
Java Class
que seja serializável, tenha umno-arg
construtor e um getter e setter para cada campofonte
Java Beans não são a mesma coisa que EJBs.
A especificação do JavaBeans no Java 1.0 foi a tentativa da Sun de permitir que objetos Java fossem manipulados em um IDE que se parecesse com o VB. Havia regras estabelecidas para objetos qualificados como "Java Beans":
EJBs vieram mais tarde. Eles combinam componentes distribuídos e um modelo transacional, executando em um contêiner que gerencia threads, pool, ciclo de vida e fornece serviços. Eles estão muito longe do Java Beans.
Os DTOs surgiram no contexto Java porque as pessoas descobriram que a especificação do EJB 1.0 estava muito "faladora" com o banco de dados. Em vez de fazer uma ida e volta para cada elemento de dados, as pessoas os empacotariam no Java Beans em massa e as enviariam.
Os POJOs foram uma reação contra os EJBs.
fonte
POJO : É um arquivo java (classe) que não estende ou implementa qualquer outro arquivo java (classe).
Bean : é um arquivo java (classe) no qual todas as variáveis são privadas, os métodos são públicos e os getters e setters apropriados são usados para acessar variáveis.
Classe normal : é um arquivo java (classe) que pode consistir em variáveis públicas / privadas / padrão / protegidas e que pode ou não estender ou implementar outro arquivo java (classe).
fonte
Primeira conversa sobre
Classe Normal - isso significa que qualquer classe define que normalmente é em java, significa que você cria diferentes tipos de propriedades de método, etc.
Bean - Bean não é nada, é apenas um objeto dessa classe específica usando este bean, você pode acessar sua classe java da mesma forma que o objeto. .
e depois falar sobre o último POJO
POJO - POJO é a classe que não possui nenhum serviço, possui apenas um construtor padrão e uma propriedade privada e essas propriedades para definir um valor correspondente aos métodos setter e getter. É uma forma abreviada de Plain Java Object.
fonte
diferença-entre-valor-objeto-padrão-e-transferência-de-dados-padrão
fonte