POJO e Java Bean

Expressões utilizadas na linguagem Java para descrever classes simples que contém atributos, getters e setters de um objeto.

Categoria de Programação

Postado em 17 dezembro 2023

Atualizado em 17 dezembro 2023

Palavras-chave: pojo,java,bean,linguagem,programacao,atributos,getters,setters,objeto

Visualizações: 602



A linguagem de programação Java foi introduzida pela primeira vez em março de 1995 pela Sun Microsystems. Desde então, Java tem se tornado uma das linguagens de programação mais utilizadas pelos programadores.

Dentro do ambiente dos programadores de java existem muitas expressões que são exclusivas de Java, exemplos disso são os POJOs e os Java Beans.

O que é o POJO usado na linguagem Java?

POJO é a abreviação de “Plain Old Java Object” que em português pode ser traduzido para “Singelos Clássicos Objetos Java”. Um POJO é uma classe simples que não é acoplada com Frameworks, não estende outra classe e nem implementa uma interface, porém interfaces simples como Serializable e Comparable podem ser usadas. Uma classe POJO deve ser simples, desacoplada e fácil de entender.

import java.time.LocalDateTime;

public class User {
    private String name;
    private Integer age;
    private LocalDateTime deleteTimeStamp;

    public User() {}

    public User(String name, Integer age, LocalDateTime deleteTimeStamp) {
        this.name = name;
        this.age = age;
        this.deleteTimeStamp = deleteTimeStamp;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public LocalDateTime getDeleteTimeStamp() {
        return deleteTimeStamp;
    }

    public void setDeleteTimeStamp(LocalDateTime deleteTimeStamp) {
        this.deleteTimeStamp = deleteTimeStamp;
    }

    @Override
    public String toString() {
        return "User [name=" + name + ", age=" + age + ", deleteTimeStamp=" + deleteTimeStamp + "]";
    }
}

A classe acima não herda nem uma classe e não implementa nenhuma interface. Pacotes como java.time podem ser usados por não pertencerem a um framework específico. Entretanto anotações como @Entity do javax.persistence não são apropriados para um POJO pelo fato de que eles não são um ORM e não devem ter uma ligação direta com o banco de dados. Porém, POJO e ORM podem ser usados em conjunto para mapear colunas de tabelas do banco de dados com os atributos de uma classe, como é o caso do Hibernate.

pojo na arquitetura de um software

No exemplo de arquitetura de software acima, o POJO está sendo utilizado em conjunto com um ORM. O repositório acessa os dados do banco de dados usando essa classe para retornar ou persistir dados.

O que é permitido fazer dentro de um POJO?

Além dos getters e setters, um POJO pode ter outros métodos para:

  • Lógica de negócios
  • Formatação de dados
  • Comparação de valores ou referências
  • Validação de atributos

Não existem restrições específicas para implementação dos métodos em um POJO. Entretanto, é importante destacar que um POJO não deve ser acoplado com um framework. A arquitetura limpa aborda sobre a importância da segregação de responsabilidades entre camadas. A classe POJO deve apenas gerenciar os valores encapsulados dentro do seu escopo e não atributos de outras classes.

O POJO pode ser utilizado para tarefas mais genéricas, não possuindo práticas específicas. Entretanto, ainda existe o Java Bean que possui restrições de uso.

O que é um Java Bean?

Assim como uma classe POJO o Java Bean também é um objeto. Um Java Bean possui várias similaridades com POJO, porém possui mais restrições. Em um Java Bean, os atributos devem ser privados, a interface Serializable deve ser implementada, um construtor vazio deve ser definido e os atributos devem ser acessíveis através de getters e setters.

import java.io.Serializable;

public class Customer implements Serializable {
    private String name;
    private String email;

    public Customer() {}

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

No exemplo acima os atributos “name” e “email” são privados e só podem ser acessados através dos getters e setters. A vantagem de um Java Bean é a sua reusabilidade. Pelo fato do objeto ser simples ele pode ser facilmente reutilizado para encapsular dados.

Conclusão

POJOs e Java Beans são bastante similares, porém Java Beans possui mais regras de implementação. Dependendo das necessidades do software, POJOs podem ser combinados com ORM e possuir lógicas de persistência de dados. Em geral, essas são as regras básicas de implementação de POJO e Java Bean, porém não são universais e podem variar em alguns ambientes de trabalho.

Projetos práticos

Criando um sistema de integração contínua (CI/CD)

Fazendo a integração contínua de Jenkins, Sonatype Nexus, Sonatype, JUnit e Gradle para automatizar processos repetitivos. Prática bastante usada em tecnologias de DevOps.

Tutorial de programação do jogo da serpente em javascript

Programando o clássico jogo da serpente usando o framework p5.js. Tutorial indicado para iniciantes da programação que querem aprender os conceitos básico da área criando jogos.

Integrando Laravel com o protocolo MQTT para comunicação entre dispositivos

Projeto de comunicação entre dois dispositivos ESP8266 e Raspberrypi4. Laravel irá funcionar como servidor e receptor de dados de temperatura e umidade coletados com o DHT11.

Caixa eletrônico usando arquitetura limpa

Usando JavaFX e arquitetura limpa para criar um aplicativo de caixa eletrônico extremamente simples.

Criando um jogo de guerra nas estrelas em javascript usando a biblioteca p5.js

Jogo simples de guerra espacial desenvolvido em javascript. Esse jogo usa cálculos de física para simular efeitos de atrito e inércia.

Veja também

A manutenção de softwares é o maior pesadelo de um programador quando o código parece um campo minado

Existe muitos programadores que escrevem algoritmos mal planejados. Essa falta de planejamento dificulta a manutenção do aplicativo e aumenta a probabilidade de novos bugs.

O DNS torna a interface do navegador mais amigável aos usuários

Antes de podermos visualizar o site, o endereço que digitamos na barra de endereço do nosso navegador passa por várias etapas, para só então podermos visualizar o site pela primeira vez...

TDD Desenvolvimento orientado por testes

Método de desenvolvimento em que os testes são a base da implementação. Eficiente para mitigar bugs de forma automática.

Notação do big-O

A notação do O grande é um método de fácil implementação, usado para avaliar a eficiência de um algoritmo em relação ao tempo de processamento.

Variáveis na programação

As variáveis são elementos responsáveis por armazenar informações temporariamente ou perpetuamente durante a execução de um programa ou algoritmo.

Linguagem de programação

A linguagem de programação é um conjunto de instruções que possuem um padrão de escritas, sendo um intermediário entre o programador humano e a máquina.