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).
O exemplo abaixo consegue ilustrar as três características mais importantes de objetos do tipo POJO, que são: rapidez e facilidade de desenvolvimento, além de fácil portabilidade.
Exemplo de um objeto POJO:
- public class Pessoa
- {
- private String primeiroNome;
- private String ultimoNome;
- public Pessoa()
- {
} - public String getPrimeiroNome()
- {
- return primeiroNome;
- }
- public void setPrimeiroNome(String primeiroNome)
- {
- this.primeiroNome = primeiroNome;
- }
- public String getUltimoNome()
- {
- return ultimoNome;
- }
- public void setUltimoNome(String ultimoNome)
- {
- this. ultimoNome = ultimoNome;
- }
- }