Classe Java POJO

JavaBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá sobre Plain Old Java Objects (POJOs), comumente conhecidos como POJOs, e suas convenções. Você também aprenderá sobre classes Java Bean. Ao final deste laboratório, você será capaz de:

Criar uma Classe POJO

Nesta etapa, criaremos uma classe POJO chamada Sample. Uma classe POJO pode ser criada de qualquer maneira e não precisa seguir nenhuma convenção específica.

// Sample POJO class
public class Sample{
    public String field1;
    private int field2;
    double field3;

    Sample(String s, int i, double d){
        this.field1 = s;
        this.field2 = i;
        this.field3 = d;
    }

    public String getField1(){
        return field1;
    }

    public double getField3(){
        return field3;
    }
}

Salve o arquivo e compile-o no terminal usando os seguintes comandos:

cd ~/project
javac Sample.java

Entendendo a Classe POJO

Nesta etapa, executaremos a classe Sample e veremos como ela funciona.

public class Main{
    public static void main(String[] args) {
        Sample sample = new Sample("field 1", 100, 123.45);

        System.out.println("Field 1: " + sample.field1);
        System.out.println("Field 2: " + sample.field2);
        System.out.println("Field 3: " + sample.field3);
    }
}

Salve o arquivo e execute-o no terminal usando os seguintes comandos:

java Main

Entendendo a API Reflection

Nesta etapa, usaremos a API de Reflexão para visualizar as propriedades da classe Sample. A API de Reflexão é uma ferramenta poderosa que permite inspecionar e modificar o comportamento de uma aplicação.

import org.apache.commons.beanutils.BeanUtils;
import java.util.Map;

public class Main {
    public static void main(String[] args) throws Exception {
        Sample s = new Sample("f1", 0, 0.0);
        try {
            Map<String, Object> properties = BeanUtils.describe(s);
            for (Map.Entry<String, Object> e : properties.entrySet())
                System.out.println(e.getKey() + "->" + e.getValue());
        } catch (Exception e) {
            System.out.print(e);
        }
    }
}

Salve o arquivo e compile-o no terminal usando o seguinte comando:

cd ~/project
javac -cp .:commons-beanutils-1.9.4.jar Main.java

A flag -cp é usada aqui para especificar o classpath. :commons-beanutils-1.9.4.jar é o caminho do pacote commons-beanutils. Para executar o arquivo compilado, use o seguinte comando:

java -cp .:commons-beanutils-1.9.4.jar Main

Criar uma Classe Java Bean

Nesta etapa, converteremos a classe POJO Sample em uma classe Java Bean. Uma classe Java Bean é um POJO que segue algumas convenções e regras.

import java.io.Serializable;

public class Sample implements Serializable{
    private String field1;
    private int field2;
    private double field3;

    public Sample(){}

    public Sample(String s, int i, double d){
        this.field1 = s;
        this.field2 = i;
        this.field3 = d;
    }

    public String getField1(){
        return field1;
    }

    public void setField1(String field1){
        this.field1 = field1;
    }

    public int getField2(){
        return field2;
    }

    public void setField2(int field2){
        this.field2 = field2;
    }

    public double getField3(){
        return field3;
    }

    public void setField3(double field3){
        this.field3 = field3;
    }
}

Entendendo a Classe Java Bean

Nesta etapa, executaremos a classe Sample e veremos como ela funciona.

public class Main{
    public static void main(String[] args) {
        Sample sample = new Sample();
        sample.setField1("field 1");
        sample.setField2(100);
        sample.setField3(123.45);

        System.out.println("Field 1: " + sample.getField1());
        System.out.println("Field 2: " + sample.getField2());
        System.out.println("Field 3: " + sample.getField3());
    }
}

Salve o arquivo e compile-o no terminal usando os seguintes comandos:

cd ~/project
javac Main.java

Entendendo a API Reflection

Nesta etapa, usaremos novamente a API de Reflexão para visualizar as propriedades da classe Sample.

public class Main {
    public static void main(String[] args) throws Exception {
        Sample s = new Sample("f1", 0, 0.0);
        try {
            Map<String, Object> properties = BeanUtils.describe(s);
            for (Map.Entry<String, Object> e : properties.entrySet())
                System.out.println(e.getKey() + "->" + e.getValue());
        } catch (Exception e) {
            System.out.print(e);
        }
    }
}

Salve o arquivo e compile-o no terminal usando os seguintes comandos:

cd ~/project
javac -cp .:commons-beanutils-1.9.4.jar Main.java

A flag -cp é usada aqui para especificar o classpath. :commons-beanutils-1.9.4.jar é o caminho do pacote commons-beanutils. Para executar o arquivo compilado, use o seguinte comando:

java -cp .:commons-beanutils-1.9.4.jar Main

Entendendo a Serialização da Classe Java Bean

Nesta etapa, usaremos a serialização para armazenar um objeto da classe Sample em um arquivo. A serialização é usada para converter um objeto em um fluxo de bytes, que pode ser salvo em disco ou enviado por uma rede.

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class Main {
    public static void main(String[] args) throws Exception {
        Sample s = new Sample("f1", 0, 0.0);
        try {
            FileOutputStream fos = new FileOutputStream("sample.ser");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(s);
            oos.close();
            fos.close();
            System.out.println("Object has been serialized");
        } catch (Exception e) {
            System.out.print(e);
        }
    }
}

Salve o arquivo e compile-o no terminal usando os seguintes comandos:

cd ~/project
javac Main.java

Execute o arquivo compilado usando o seguinte comando:

java Main

Entendendo a Desserialização da Classe Java Bean

Nesta etapa, usaremos a desserialização para ler um objeto da classe Sample de um arquivo. A desserialização é usada para converter um fluxo de bytes de volta em um objeto.

import java.io.FileInputStream;
import java.io.ObjectInputStream;

public class Main {
    public static void main(String[] args) throws Exception {
        try {
            FileInputStream fis = new FileInputStream("sample.ser");
            ObjectInputStream ois = new ObjectInputStream(fis);
            Sample s = (Sample) ois.readObject();
            ois.close();
            fis.close();
            System.out.println("Object has been deserialized");
            System.out.println("Field 1: " + s.getField1());
            System.out.println("Field 2: " + s.getField2());
            System.out.println("Field 3: " + s.getField3());
        } catch (Exception e) {
            System.out.print(e);
        }
    }
}

Salve o arquivo e compile-o no terminal usando os seguintes comandos:

cd ~/project
javac Main.java

Execute o arquivo compilado usando o seguinte comando:

java Main

Resumo

Neste laboratório, você aprendeu sobre POJOs e seu papel na programação Java. Você aprendeu como criar uma classe POJO e a diferença entre um POJO e uma classe Java Bean. Você aprendeu como converter uma classe POJO em uma classe Java Bean e como usar a API Reflection para visualizar as propriedades de uma classe Java Bean. Finalmente, você aprendeu como serializar e desserializar um objeto Java Bean.