Postagens

Dicas para a Certificação OCM Java EE Enterprise Architect

Imagem
Olá pessoal, hoje irei postar e comentar algumas dicas para quem tem interesse em adquirir a certificação OCM Java EE 6 Enterprise Architect.

A Certificação Esta certificação se enquadra no titulo Master da Oracle, por esta razão ela é mais complexa do que as outras Certificações do mundo Java, para mais detalhes consulte a página oficial da certificação.

Fases da Certificação A certificação é composta por 5 fases, sendo 3 exames, 1 treinamento oficial e o envio de documentos, na seguinte ordem:
Realização de Curso Oficial;Exame 1Z0-807;Exame 1Z0-895;Exame 1Z0-866;Envio do curso oficial (Course Submission Form).
Realização do Curso Oficial Esta etapa é uma exigência que a Oracle faz principalmente para os exames OCM, onde cada candidato deve ter concluído um curso oficial, cada exame tem uma relação de cursos que podem ser realizados, onde você deve realizar pelo menos um curso, não sendo necessário realizar vários.
Você pode realizar o curso antes de começar o processo ou até mesmo no de…

Utilizando Profiles com SpringBoot

Imagem
Olá hoje iremos ver como trabalhar com Profiles dentro de aplicações desenvolvidas com SpringBoot.

O que são Profiles Profiles são recursos para determinar o ambiente onde a aplicação irá executar, e o Spring trabalha com esse tipo de situação de uma maneira muito transparente, e em aplicações onde utilizamos SpringBoot isso se torna ainda mais simples.

Imagine o cenário onde você tenha uma interface e sua implementação muda de acordo com o ambiente de execução, veja o exemplo:
Desenvolvimento (dev);Homologação (homolog);Produção (prod).
Criando Profiles Antes de tudo vamos criar uma aplicação com SpringBoot, caso tenha dúvidas de como criar uma aplicação veja Aqui , abaixo veja como ficou nosso pom.xml:
<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.…

Criando uma Aplicação com SpringBoot e MongoDB

Imagem
Olá pessoal hoje iremos ver como criar uma aplicação utilizando SpringBoot e o banco NoSQL MongoDB.

Criando o Projeto Para criar um sistema usando o SpringBoot a melhor maneira seria criar o projeto via Maven, este processo pode ser realizado de várias maneiras: SpringInitializr;SpringIDE;Adicionar as dependências diretamente no pom.xml.  Segue como ficou o pom.xml do projeto:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56<?xml version="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>br.com.cvinicius</groupId><artifactId>boot-data-mongodb</artifactId><ver…

Criando objetos com @Builder e @Value do framework Lombok

Imagem
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@BuilderpublicclassCliente{private String nome;private String cnpj;private String endereco;}
O arquivo compilado irá ter a seguinte estrutura:


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 5Cliente.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 …

Melhorando a qualidade do código com Lombok

Imagem
Olá pessoal, hoje iremos ver como podemos melhorar a escrita do código Java evitando o famoso "Don't repeat your self", conhecido também como código boilerplate, isso tudo usando o projeto Lombok.

O famoso código boilerplate
O código boilerplate é aquele que a linguagem ou tecnologia, nos obriga a fazer para criar classes, métodos, e compor comportamentos aos nossos sistemas, no Java, temos muitos pontos que fazemos código boilerplate, as vezes nem percebemos, pois já estamos acostumados com a estrutura da linguagem.
Com a evolução da plataforma Java, vários recursos foram introduzidos, que nos ajudou a reduzir o famoso código boilerplate, tais como: Lambdas, Streams, Optional, Default Methods, etc.
Apesar da constante evolução da plataforma, ainda existem pontos que precisamos executar de forma manual, ou com a ajuda das IDEs, vamos avaliar alguns deles: Getters/Setters;Construtores;Equals e HashCode;toString();Variáveis de log e depuração.  Mas a grande vantagem da plat…

Melhorando a sobrescrita dos métodos equals() e hashCode()

Olá hoje iremos melhorar a forma que realizamos uma tarefa que muitos desenvolvedores não gostam de fazer, ou até mesmo deixam de lado, mas é de extrema importância para o correto funcionamento dos nossos Objetos, que é a sobrescrita dos métodos equals e hashCode().

Sobrescrita utilizando uma IDE
A maioria das IDEs realizam a tarefa de sobrescrever os métodos equals(Object o) e hashCode(), mas o código gerado não é dos melhores, vamos analisar um exemplo da geração automática usando a IDE Eclipse, segue o código:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37publicclassCliente{private String cpf;publicCliente(String cpf){this.cpf= cpf;}public String getCpf(){return cpf;}@OverridepublicinthashCode(){finalint prime =31;int result =1; result = prime * result +((cpf ==null)?0: cpf.hashCode());return result;}@Overridepublicbooleanequals(Object obj){if(this== obj)returntrue;if(obj ==null)returnfalse;if(getClass()!= obj.getClas…