Pular para o conteúdo principal

Criando objetos com @Builder e @Value do framework Lombok

Hoje iremos ver como utilizar as anotações @Builder e @Value do framework Lombok, visando melhorar a forma de criação de objetos.

Utilizando a anotação @Builder


O nome vem do Pattern Builder, que é um pattern que visa a criação de objetos, ou seja é um pattern de Criação.

Vamos analisar a classe abaixo:

1
2
3
4
5
6
7
@Getter
@Builder
public class Cliente {
     private String nome;
     private String cnpj;
     private String endereco;
}

O arquivo compilado irá ter a seguinte estrutura:

Resultado da compilação utilizando @Builder.

No exemplo acima, notamos que o Lombok criou uma classe interna chamada ClienteBuilder, seguindo os preceitos do pattern, agora podemos criar um objeto Cliente utilizando uma forma fluente, assim deixando o código mais simples e funcional, como abaixo:

1
2
3
4
5
Cliente.builder()
       .nome("Nome do Cliente")
       .cnpj("1234567890")
       .endereco("São Paulo")
       .build();

Quando trabalhamos com a criação de modelos de domínio complexos, onde cada entidade possui vários relacionamentos e atributos o uso dessa abordagem ajuda muito.


Utilizando a anotação @Value


Um outro recurso interessante do Lombok é a anotação @Value, com ela podemos criar objetos imutáveis, este tipo de objeto, são aqueles que após criados, não podem ter seu conteúdo alterado, os principais exemplos que temos desse tipo de objeto são as classes String, Integer, Calendar, etc.

Na plataforma Java, para criarmos objetos imutáveis temos que utilizar a palavra reservada final, evitar o uso de setters, e toda lógica de criação deve ser realizada no momento da construção do objeto.

1
2
3
4
5
6
7
@Value
@Builder
public class Cliente {
    private String nome;
    private String cnpj;
    private String endereco;
}

Perceba que adicionamos a anotação @Value e removemos a @Getter, pois o seu comportamento é justamente marcar a classe e seus atributos como final, criar todos os getters necessários e criar os métodos equals(), hascode() e toString().

Resultado a compilação da classe usando @Value e @Builder.
O uso dessa classe fica da mesma forma do exemplo com @Builder, mas agora temos certeza de estarmos trabalhando com um objeto imutável, em conjunto de uma forma fluente de criação de objetos.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
public class CriacaoCliente {

 public static void main(String[] args){
 
      Cliente cliente = Cliente.builder()                                          
                                      .nome("Titulo Cliente")
                               .cnpj("1234567890")
                               .endereco("Endereço Cliente")
                               .build();
  
       System.out.println(cliente);
 }
}

Utilizando essas boas práticas conseguimos ter um código Java limpo e de simples evolução.

Até a próxima.

Referências



Comentários

Postagens mais visitadas deste blog

Utilizando LocalDate, LocalDateTime e LocalTime na Prática

Tudo bem pessoal, hoje iremos avaliar e analisar operações de manipulação de Datas envolvendo a JavaTime API introduzida no Java 8.

Exemplos da java.time API
Já se passaram alguns anos desde o lançamento do Java 8 e mesmo após este período, há empresas que desconhecem o poder da java.time API, esta foi uma nova API de datas introduzida no Java 8 visando resolver problemas que tínhamos com as velhas classes Date e Calendar.

Vamos mostrar vários exemplos práticos do uso da API:
Criação de objetos No exemplo abaixo, estamos criando os objetos para manipulação de datas, perceba que temos 3 tipos, sendo LocalDate para manipular datas, LocalDateTime para manipular data/hora e LocalTime para horas:
LocalDate localDate = LocalDate.now(); LocalDateTime localDateTime = LocalDateTime.now(); LocalTime localTime = LocalTime.now();
Utilizando formatação Aqui realizamos a operação de formatação, perceba que não foi necessário utilizar a classe SimpleDateFormat, que usaríamos em conjunto com D…

Lendo e Manipulando arquivos CSV com Java

Olá hoje veremos como realizar a leitura e manipulação de arquivos CSV com Java, mostrando que as novas versões da plataforma Java deixaram algumas tarefas simples de serem realizadas.

Exemplo de Arquivo Hoje em dia é comum ao realizar integrações ou carga de dados o uso de arquivos CSV, isto porque, este arquivo possui uma estrutura de fácil entendimento e simples de manipular na maioria das plataformas de desenvolvimento.

Para realizar a leitura dos dados vamos manipular um arquivo com as seguintes colunas: namecpfagephone address:

name;cpf;age;phone;address caio;123456789;20;1145223643;AvenidaPaulista vinicius;147852369;18;1125253625;AvenidaManoel sandra;963258741;30;1174587858;RuaTeixeira regina;125478522;40;1145254536;RuaFernando fernando;785245563;42;1145253669;RuaPereira augusto;456123014;50;1125363633;AvenidaPaulinia maria;456123789;10;1125455525;AvenidaNossaSenhora
Para representar os dados em objetos Java iremos utilizar a seguinte classe:

importlombok.AllArgsConstruc…

Versionamento de Banco Dados com Flyway

Olá pessoal, hoje iremos analisar e aprender como realizar o versionamento e gerenciamento das bases de dados relacionais utilizando o framework Flyway.

Versionamento de Banco Dados Ao trabalhar com desenvolvimento de sistemas é comum realizarmos o versionamento, isso porque uma aplicação pode necessitar de correções, novas funcionalidades e evoluções, onde para garantir a compatibilidade e cuidar do seu ciclo de vida, geramos versões onde é especificado quais itens estão presentes em cada release.
Vamos imaginar seguinte cenário: Sistema ERP1.0.0: Entrega dos módulos Financeiro e RH;1.1.0: Entrega do módulo Contas a Receber. Perceba que a ideia é controlar o que cada versão possui de diferente, e para controlar essas mudanças no lado da aplicação existem várias técnicas e ferramentas, mas e para controlar as mudanças no lado do Banco de dados ? 
Para isso podemos utilizar ferramentas de versionamento que ajudam a realizar este controle, a ferramenta que iremos utilizar é o Flyway.
Con…