Qual é a diferença entre um JavaBean e um POJO?

Não tenho certeza sobre a diferença. Eu estou usando o Hibernate e, em alguns livros, eles usam JavaBean e POJO como um termo intercambiável. Eu quero saber se há uma diferença, não apenas no contexto do Hibernate, mas como conceitos gerais.

Um JavaBean segue certas convenções. Nomenclatura de Getter / setter, tendo um construtor padrão público, sendo serializável, etc. Consulte Convenções JavaBeans para obter mais detalhes.

Um POJO (plain-old-Java-object) não é rigorosamente definido. É um object Java que não tem um requisito para implementar uma interface específica ou derivar de uma determinada class base, ou fazer uso de annotations específicas para ser compatível com uma determinada estrutura, e pode ser qualquer arbitrariedade (geralmente relativamente simples) Objeto Java.

Todos os JavaBeans são POJOs, mas nem todos os POJOs são JavaBeans.

Um JavaBean é um object Java que satisfaz certas convenções de programação:

  • a class JavaBean deve implementar serializável ou externalizável;
  • a class JavaBean deve ter um construtor no-arg público;
  • todas as propriedades do JavaBean devem ter methods setter e getter públicos (conforme apropriado);
  • Todas as variables ​​de instância do JavaBean devem ser privadas.

De acordo com Martin Fowler, um POJO é um object que encapsula a Lógica de Negócios enquanto um Bean (exceto a definição já declarada em outras respostas) é pouco mais que um contêiner para armazenar dados e as operações disponíveis no object meramente definidas e obter dados.

O termo foi cunhado enquanto Rebecca Parsons, Josh MacKenzie e eu estávamos nos preparando para uma palestra em uma conferência em setembro de 2000. Na palestra, estávamos apontando os muitos benefícios de codificar a lógica de negócios em objects java regulares em vez de usar Entity Beans. Nós nos perguntamos por que as pessoas eram tão contra o uso de objects regulares em seus sistemas e concluíam que era porque os objects simples não tinham um nome sofisticado. Então nós demos a eles um, e ele foi muito bem recebido.

http://www.martinfowler.com/bliki/POJO.html

POJO: Se a class puder ser executada com o JDK subjacente, sem que outras bibliotecas externas de terceiros suportem, seu POJO é chamado

JavaBean: Se a class contiver somente atributos com acessadores (setters e getters), eles serão chamados de javabeans.Java beans geralmente não conterão nenhuma lógica do bussiness, e sim aqueles usados ​​para armazenar alguns dados nela.

Todos os Javabeans são POJOs, mas todos POJO não são Javabeans

Pojo – Objeto Java antigo simples

A class pojo é uma class comum sem nenhuma especialidade, class totalmente frouxamente acoplada à tecnologia / framework.a class não implementa da tecnologia / framework e não se estende da tecnologia / framework api que a class é chamada de class pojo.

A class pojo pode implementar interfaces e estender classs, mas a superclass ou interface não deve ser uma tecnologia / framework.

Exemplos :

1

 class ABC{ ---- } 

Classe ABC não implementando ou estendendo a partir de tecnologia / framework é por isso que esta é a class pojo.

2

 class ABC extends HttpServlet{ --- } 

Classe ABC que se estende da API de tecnologia de servlet é por isso que esta não é uma class de pojo.

3

 class ABC implements java.rmi.Remote{ ---- } 

A class ABC implementa a partir do rmi api e é por isso que esta não é uma class pojo.

4

 class ABC implements java.io.Serializable{ --- } 

essa interface faz parte da linguagem java e não faz parte da tecnologia / framework.so é a class pojo.

5

 class ABC extends Thread{ -- } 

aqui thread também é class da linguagem java, então esta também é uma class pojo.

6

 class ABC extends Test{ -- } 

Se a class de teste estender ou implementar a partir de tecnologias / estrutura, o ABC também não é uma class de pojo, pois herda as propriedades da class de teste. Se a class de teste não for uma class pojo, então a class ABC também não é uma class pojo.

7

agora este ponto é um caso excepcional

 @Entity class ABC{ -- } 

@Entity é uma anotação dada por hibernate api ou jpa api, mas ainda podemos chamar essa class de class pojo. class com annotations dadas a partir de tecnologia / framework é chamada de class pojo por este caso excepcional.

POJOS com certas convenções (getter / setter, construtor público no-arg, variables ​​privadas) e estão em ação (ex. Sendo usado para leitura de dados por formulário) são JAVABEANS .