O que são POJOs em Java?

My name is Lucas. I'm a journalist and software developer who can take photos, print zines and make videos, that's no joke. 📸📰🎬💻🕺😅
De forma simples e direta, POJO em Java são classes simples que armazenam e gerenciam dados.
POJO
Plain Old Java Objects
Plain Ordinary Java Objects
Java nos permite criar objetos de classes customizadas, esses objetos nos ajudam a armazenar e organizar dados.
Esses objetos podem armazenar dados nos seus campos (fields) e atuar como compartimentos para mover dados na aplicação.
Agora, quando essas classes são mantidas em uma estrutura simples, o Java se refere a elas como Plain Ordinary (or Old) Java Objects, ou simplesmente POJOs.
Simples aqui significa que essas classes não devem herdar de outras classes ou conter nada além da lógica básica necessária para armazenar esses dados.
Uma boa prática para criar classes POJO é que elas devem ser fáceis de criar, usar e entender.
Elas devem ser públicas
Devem ter getters and setters públicos
Seus campos devem ser privados
Por padrão, nenhum argumento deve ser passado ao seu construtor.
Os POJOs portanto devem ser simples e diretos, eles não estendem outras classe nem implementam interfaces.
Da mesma forma, POJOs geralmente não contém a lógica do negócio.
Essas não são regras rígidas, mas são boas práticas comuns que tornam nossas classes POJOs mais fáceis de ler e de usar.
// POJO class is public
public class Car {
// Fields are private
private String model;
private int year;
// Default no arg constructor
public String getModel() {
return model;
}
// Public getters to access POJO data
public int getYear() {
return year;
}
// Public setters to set POJO fields
public void setModel(String model) {
this.model = model;
}
public void setYear(int year) {
this.year = year;
}
}
Casos de uso
A principal utilidade dos POJOs é estruturar dados de forma limpa, simples e independente. Eles são amplamente utilizados em cenários como: [1]
Transferência de Dados (DTOs): Transportar informações entre diferentes camadas de um sistema (ex: da interface do usuário para o banco de dados). [1, 2]
Modelagem de Domínio: Representar entidades reais (como "Usuário" ou "Produto") nas regras de negócio da aplicação. [1]
APIs e Integrações: Servir de base para a conversão de formatos complexos como JSON ou XML, facilitando a leitura de dados de serviços web. [1]
Mapeamento de Banco de Dados: Utilizados por frameworks de persistência (como o Hibernate) para ler e gravar dados em tabelas. [1, 2, 3, 4, 5]
Variações
Por fim, vale lembrar, que hoje existem variações amplamente difundidas e utilizadas dos clássicos POJOs. Essas variações possuem regras específicas, como os JavaBeans (que possuem serialização e construtor padrão vazio) ou os Records (introduzidos nas versões mais novas do Java para criar objetos imutáveis com menos código).



