Plain Old Java Objects
Plain Old Java Objects, ou POJOs, são objetos Java que seguem um design simplificado em contraposição aos EJBs. Um JavaBean é um POJO que segue definições rígidas de estrutura (construtor default sem argumentos e métodos que seguem o padrão de getters e setters para seus atributos). Os POJOs não possuem nenhum conhecimento de código de infra-estrutura.
POJO, um acrônimo para Plain Old Java Objects, é suportado pelos advogados da idéia de que quanto mais simples o projeto, melhor. O nome é usado para enfatizar que o objeto em questão não possui nenhuma característica especial, como as requeridas em um EJB, por exemplo. O termo foi inventado por Martin Fowler, Rebecca Parsons e Josh MacKenzie em Setembro de 2000. "Nós queríamos saber porque as pessoas eram contra o uso de objetos regulares em seus sistemas e concluímos que era devido a falta de um nome extravagante para eles. Assim nós demos-lhes um, e funcionou muito bem.". O termo segue o padrão de atribuir um nome para tecnologias que não possuem nenhuma característica nova, como POTS (Plain Old Telephone Service).
O termo ganhou aceitação por causa da necessidade de um termo comum e facilmente inteligível que contrasta com complicados frameworks de objetos. É mais atrativo do que o termo beans do Java devido ao conflito existente entre JavaBeans e Enterprise JavaBeans. O primeiro é predominantemente um POJO que segue rigorosas convenções para nomear métodos, e o último é um modelo de componente (EJB 3 reduz o grau de diferença entre eles).
Um POJO é um objeto java normal que não implementa nenhuma interface e nem estende nenhuma classe específica de um framework. Podem ser usados fora de um container e são fáceis e simples de serem feitos, não precisam conhecer sobre regras de negocio ou arquitetura da aplicação. Normalmente contém métodos get/set e um único construtor sem argumentos.
POJOs agem como transmissores de dados, porém sem se importar com o seu conteúdo em si, eles apenas recebem as entradas através de métodos get/set e as passam para serem interpretadas e utilizadas, dessa maneira garantem a velocidade e a simplicidade. As grandes vantagens dos POJOs são: Independência em relação ao container, Rapidez, Facilidade de desenvolver, Portabilidade.
Exemplo:
public class Carro
{
private String cor, nome;
public Carro( ){}
public void setNome(String nome)
{this.nome=nome}
public String getNome( )
{return nome;}
public void setCor(String cor)
{this.cor=cor}
public String getCor( ){return cor;}
}
- Note que os atributos são privados, porem pode ser usado por qualquer um através dos gets/sets.
Existe uma relação entre POJOs e JavaBean, porem não são exatamente a mesma coisa.
JavaBean são classes com os métodos get/set e construtor vazio.
JavaBeans podem ser POJOs, POJOs podem ser JavaBeans, mas não necessariamente. Podemos ter um JavaBean que estende algo de framework ou um POJO que não usa get/set.