sexta-feira, 10 de março de 2017

Banco de Dados com Java

Tentarei abordar de forma prática como funciona a parte de conexão entre Java e Banco de Dados. Porém, para que todo conhecimento possa ser fixado existe também a teoria.

Primeiro passo é decidir qual banco de dados deseja utilizar.
Os mais comuns são Oracle, SQL Server, MySQL. Para esse tópico usaremos o banco de dados H2.

O banco de dados H2 é simples e é desenvolvido em Java. Portanto, para "instalarmos" esse banco de dados precisamos apenas de um jar.

Link para o site do H2:

O H2 permite que vc execute um servidor, cujo qual consegue acessar e dar manutenção pelo browser. 
Nesse caso utilizaremos apenas .jar dentro da aplicação e ele funcionará em background.

Segue o link da página de download:

1. Baixe o arquivo binário.

Coloque o arquivo dentro da pasta "lib" do seu projeto. 
Clique com o botão direito do mouse e clique em > Build Path > Add To Build Path

Obs.: Mesmo após colocando o jar na pasta lib também é necessário adicionar o jar no "path" do projeto para que o mesmo consiga entender que esse jar existe e deve ser utilizado.
Para maiores informações pesquise sobre "classpath" de um projeto.






Repare que nesse caso o projeto criado é um projeto Web, por isso contém as pastas WebContent e WEB-INF.

Agora que o h2.jar já está pronto para ser utilizado vamos começar a brincadeira.

Para iniciarmos vamos criar uma tabela. Nesse exemplo utilizaremos alguns "conceitos" de programação que facilitam nossa vida. 
Exemplos: Concentrarmos as queries em um único local, isolarmos as responsabilidades de abrir e fechar conexão, entre outros.
Esses conceitos não serão explicados nesse tópico, mas, caso tenha ficado curioso, pesquise por: "Orientação a Objeto" que nesse caso também envolve "Baixo Acoplamento e Alta coesão", "Design Pattern", "Estrutura de Pacotes/Packages".

Continuando nosso exemplo, precisamos criar a tabela. 

2. Crie uma interface chamada "QueriesUtil"

Nessa interface concentraremos todas as queries necessárias. Portanto, vamos explicar todas elas de uma única vez e depois utilizaremos as queries de acordo com nossa demanda.

Crie um pacote chamado com.repository para organizarmos nossas classes e dentro desse pacote crie a interface chamada QueriesUtil.java com o seguinte conteúdo:











Explicando as queries:

A query de CREATE_TABLE irá criar uma tabela com as colunas ID, NOME, DATA NASCIMENTO e SALARIO. A coluna ID será a PK da nossa tabela.
Essa tabela tem o intuito de exibir os principais tipos de colunas (pk, texto, data e número) e exibir a sintaxe do banco de dados H2.

A query SELECT_QUERY irá trazer todas as colunas da nossa tabela.

A query INSERT_QUERY fará insert passando os parâmetros desejados.

A query UPDATE_QUERY atualizará um único registro.

A query DELETE_QUERY removerá um único registro.


Quando um banco de dados é iniciado ele ainda está "vazio". Portanto, é necessário criar um "database" e um "usuário" para conseguirmos conectarmos ao banco.
Por nossa sorte, o H2 já possui uma inteligência que ele mesmo cria (se não existir) o banco de dados (quando é iniciado pela aplicação) e utiliza o usuário/senha que informamos.


3. Crie uma classe chamada DatabaseH2.java


Vamos criar agora uma classe chamada DatabaseH2 que será responsável por abrir e fechar a conexão.

Repare que o método getConnection() devolverá a mesma conexão se já estiver aberta.





















Obs.: A url de uma base de dados é descrita pelo caminho onde encontra-se o banco dedados (nesse caso locamente) / nome do banco de dados.
Nesse caso a url foi retirada do site do H2 e o /test é o nome do nosso banco.
sa representa o usuário (admin).
e estamos usando sem senha.


4. Criando o banco de dados.

Crie a classe CreatingDatabase.java com o seguinte conteúdo:












Rode essa classe como uma Java Application. Botão direito > Run As > Java Application.

Nesse momento seu banco de dados com a tabela foi criada.


5. Inserindo Registro

Crie a classe InsertManualData.java com o seguinte conteúdo:



















Rode essa classe como uma Java Application. Botão direito > Run As > Java Application.

Nesse exemplo os registros serão inseridos (via comando INSERT) e depois verificaremos o conteúdo do banco de dados com o comando (SELECT).

6. Atualizando registro

Crie a classe UpdateManualData.java com o seguinte conteúdo:
















Rode essa classe como uma Java Application. Botão direito > Run As > Java Application.

Nesse exemplo os registros serão atualizados (via comando UPDATE) e depois verificaremos o conteúdo do banco de dados com o comando (SELECT).


7. Removendo registro

Crie a classe DeleteManualData.java com o seguinte conteúdo:





















Rode essa classe como uma Java Application. Botão direito > Run As > Java Application.

Nesse exemplo o registro será removido (via comando DELETE) e depois verificaremos o conteúdo do banco de dados com o comando (SELECT).

Boa sorte! (:

quarta-feira, 8 de fevereiro de 2017

Configurando Maven Linux (Ubuntu)

Para realizar a configuração do Maven no Linux (nesse exemplo estamos usando Ubuntu) siga as instruções abaixo:

1) Faça download download do Maven.

Obs.: Antes de fazer download do Maven, verifique se a versão que pretende instalar é compatível com a mesma versão do JDK já instalado.

Caso tenha dúvidas sobre como configurar o JDK utilize o seguinte link:
http://dominanciajava.blogspot.com.br/2017/01/configurando-jdk-e-maven-no-linux-ubuntu.html

Pode baixar o arquivo com extensão ".gz" ou ".zip"


Obs.: O exemplo acima exibe também o JDK, pois a mesma imagem foi usado em outro post.


2) Após fazer o download, o arquivo foi extraído em uma pasta desejada.

Para configurarmos as variáveis de ambiente, vamos alterar o arquivo ".bashrc".

3) Para isso, abra o terminal e digite "gedit .bashrc".

4) Adicione as variáveis abaixo no final do arquivo .bashrc:

M2_HOME=~/Documents/work/apache-maven-3.3.9
export M2_HOME
PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
export PATH

Obs.: Repare que a varíavel PATH ficou por último e que ela contém também a configuração prévia do JDK separado por dois pontos (:).

Conteúdo que foi adicionado no final do arquivo .bashrc:





Explicação dos comandos:
- O comando "~" significa que o sistema usará todo o caminho absoluto referente ao seu usuário. Algo parecido com: "/home/usr/seu_usuario/"
- Alinha M2_HOME=PATH_TO_FOLDER estamos declarando essa variável
- A linha export M2_HOME faz com que essa variável possa ser utilizada.
- A linha PATH=$PATH estamos declarando a variável PATH usando a variável $PATH já existente do sistema e estamos adicionando nossas varíaveis separadas por dois pontos (:). Repare que estamos no PATH estamos declarando o caminho da pasta "/bin".
- E por último, estamos dando o export da variável PATH.

Obs.: Para que o Maven funcione, é necessário ter o JDK configurado no
ambiente. 
Portanto, caso não funcione seu Maven, configure primeiro o JDK seguindo o seguinte link:
http://dominanciajava.blogspot.com.br/2017/01/configurando-jdk-e-maven-no-linux-ubuntu.html


5) Após configurar e salvar o arquivo ".bashrc", feche e abra novamente o terminal.

6) Testando se o Maven foi configurado corretamente através do comando "mvn -version":






Boa sorte! (:

quarta-feira, 1 de fevereiro de 2017

O que é o Spring ? O que são frameworks ? As frameworks Spring que você deve saber...



     


     Quando uma pessoa decide procurar um emprego na área de desenvolvimento de software, mais especificamente com Java, durante as inúmeras entrevistas técnicas, deve ter se deparado com perguntas do tipo... Você conhece Spring ? Você alguma vez já trabalhou com Spring ? O que é injeção de dependência ?
    
      Muitos profissionais que iniciam sua carreira de desenvolvedores irão, em sua grande maioria, se deparar com alguma ou todas essas perguntas e isso com certeza irá contar muito pontos se você souber falar pelo do que se trata, se você já utilizou e como utilizou. 

     Pessoas em geral, quando questionados em algo que não sabem, tendem a inventar ou expressar palavras vagas sobre o assunto. Por exemplo: 

     Entrevistador: Você já trabalhou com Spring ?
     Candidato: Sim

    Entrevistador: Com qual framework e como você utilizava ela no seu projeto ?
    Candidato: Eu colocava uma anotação na classe.

    A partir desde ponto, já consegue-se ter uma idéia de que o candidato não tem o perfil esperado pela vaga ou seu conhecimento do spring é bastante superficial.
    
    Esse tópico tem como objetivo informar o que é Spring e quais são suas frameworks mais utilizadas no mercado para que você ,candidato, consiga com clareza, explicar e entender esses tipos de perguntas em entrevistas técnicas.





   1 - O que é Spring?


   Quando te perguntarem o que é Spring sempre questione de qual framework ele está querendo saber.

   Spring - "https://projects.spring.io/spring-framework/" é um conjunto de frameworks Java que hoje é criado e mantido pela Empresa Pivotal Software.

   Esses frameworks são utilizados em larga escala e aprender as principais é o mínimo que um desenvolver Web - Java deve saber bem para conseguir ser produtivo e trabalhar com aplicações de nível profissional.




2 - O que são frameworks ?


  Mas afinal o que são frameworks ? Se você já de deparou com qualquer aplicação Java pode ver que em sua estrutura temos bibliotecas .jar referências no mesmo.

 Se você observar, vai ver que para seu static void man rodar você deve ter previamente instalado uma jdk ou jre(Se você não sabe do que se trata, acesse http://dominanciajava.blogspot.com.br/2016/10/configurando-jdk-no-windows-para.html ). Isso acontece porque o código Java na verdade precisa de uma máquina especial (JVM) capaz de entender esse código Java compilado e converter isso para que uma CPU convencional consiga executar seu programa corretamente.

  Porém, os jars que estão referenciando a sua aplicação , são dependências ou bibliotecas criadas na linguagem Java para automatizar, auxiliar ou executar seu código e todas as atividades para você.
  Com esse entendimento, frameworks são, nada mais nada menos, que um conjunto de bibliotecas criadas para executar uma determinada tarefa. São considerados frameworks, quando esse conjunto é extenso e aplicado em qualquer projeto de forma para facilitar, otimizar ou executar tarefas que o auxiliarão no projeto a ser desenvolvido.




3 - Spring frameworks:


http://docs.spring.io/spring/docs/current/spring-framework-reference/html/overview.html

   Primeiramente, vou dar alguns comentários sobre algumas das frameworks que são bastante utilizadas do spring, mas fica a dica: Leia a documentação do próprio spring http://docs.spring.io/spring/docs/current/spring-framework-reference/html/overview.html.

   Além de conter muito mais informações do que eu vou colocar aqui, esse é um processo no qual todo técnico deve estar habituado a fazer. Pesquisar, ler e entender documentações técnicas e não apenas respostas prontas do stackoverflow.

   Spring core:

       Essa é a framework fundamental para conseguir utilizar os outros frameworks do spring. Ela é responsável por prover a Injeção de Dependência (Dependency Injection e Inversão de Controle (IoC) fora outras coisas bastante importante no qual auxiliam no desenvolvimento. Esses conceitos apresentados anteriormente são requiridos para se entender como essa parte e as demais da framework funcionam. Aqui é um divisor de águas em um entrevista de técnicos junior... os que sabem esses conceitos, os que sabem usar apenas, porém não conhece o conceito (ai mudou a cor da grama de verde para marrom já não consegue desenvolver mais) e os que não fazem idéia.

   Spring jdbc:

        Spring jdbc provê todas as classes que serão responsáveis por realizar a interface com o banco de dados de modo genérico, ou seja, independente de qual seja seu banco de dados (MySQL, Oracle ou MsSQL), essa framework fornecerá meios sofisticados de realizar toda a interação com o banco de dados.

   Spring MVC:

         Para essa framework, antes de utiliza-lá você precisa entender o que são Java Servlets, o que é o design pattern MVC (Model - View - Controller) e praticá-los de modo a se tornarem automáticos e o conceito seja fixado. O spring-webmvc provê uma clara separação entre as camadas, fornecendo também componentes para a camada View. Essa framework também provê implementações para REST Webservices. Saber webservices hoje é fundamental, ainda mais se tratando de arquitetura de micro serviços.

     Como escrevi anteriormente, existem várias outras frameworks do Spring que são muito utilizadas no desenvolvimento Java profissional. Muito conceitos utilizados pelo Spring foram aplicados no Java EE 7 e Java EE 8.
 


Considerações


     Esse artigo tem como objetivo clarificar do que se trata cada assunto e mostrar um caminho para os iniciantes na carreira de desenvolvimento de software. Perceba que, mais importante do que saber usar uma determinada framework é... o conceito por de trás dela. A leitura e prática são necessários para formar o conhecimento e pode ter certeza que em uma entrevista técnica de poucos minutos qualquer Senior consegue identificar se a pessoa "domina" aquilo que ela supostamente está colocando em seu currículo.

   Sempre seja sincero na entrevista e coloque aquilo que você realmente sabe. Desta forma, você não irá se frustar em uma entrevista e não fará com que os entrevistadores ( que geralmente são profissionais que são alocados por algumas horas para isso) percam seu tempo com alguem que irá usar o "jeitinho brasileiro" para conseguir uma posição no qual não está preparado.


 Boa sorte e bons estudos.

 
  

segunda-feira, 30 de janeiro de 2017

Instalando plugin do SVN no Eclipse

Para todos aqueles que necessitam trabalhar com a ferramenta de versionamento de código SVN terá duas opções:
- Instalar o SVN na máquina.
- Instalar o Plugin do SVN no Eclipse. Essa opção será abordado nesse tópico.

Existe diferentes plugins do SVN para o eclipse. Nesse caso usaremos o plugin do Subversive.

===Plugin Subversive===

Para instalarmos o plugin do SVN no eclipse é necessário clicar em : Help > Install New Software


Na janela que abrir digite a url compatível com seu eclipse. Verifique se a mesma já não vem carregada (no combobox). Caso não venha, pesquise no site do eclispe a url correta referente a sua versão do eclipse.

- Após digitar a url e clicar "Enter" a lista de plugins será exibida. Encontre a opção "Collaboration".



- Após encontrá-la, expanda a opção "Collaboration" e selecione a opção "Subversive SVN Team Provider" e instale. Será solicitado termo de confirmação e será necessário reiniciar o eclipse.




- Após reiniciá-lo, instalaremos o SVN Connector.


===Instalando SVN Connector===

- Abra novamente a janela clicando em: Help > Install new Software e digite a url do SVN Connector.
Nesse exemplo a url é: http://community.polarion.com/projects/subversive/download/eclipse/6.0/neon-site/

Obs.: A versão SVN Connector do site do Neon não é semalhante a versão do eclipse, pois é um repositório separado.

Caso esteja em dúvida sobre a url do Neon visite o site:
https://polarion.plm.automation.siemens.com/products/svn/subversive/download?utm_source=eclipse.org&utm_medium=link&utm_campaign=subversive

- Encontre e expanda a opção "Subversive SVN Connectors".


-  Após expandir, escolhe a opção "SVN Kit Implementation" e instale-a. Será solicitado termo de confirmação e depois será necessário reiniciar o eclipse.



Obs.: Caso não consiga instalar o SVN Connector da maneira descrita acima, tente usar o SVN importando e/ou compartilhando um projeto que a tela com os SVN Connectors devem aparecer.


===Compartilhando projeto===

- Clique no projeto que deseja compartilhar e clique com o botão direito > Team > Share Project > SVN




- Na próxima janela será solicitado a url do repositório, usuário e senha.

===Importando projeto===

- Clique em File > Import Project > Digite "SVN" > Project from SVN. Na próxima janela será solicitado url do repositório, usuário e senha.





Boa sorte! (:

segunda-feira, 23 de janeiro de 2017

Configurando JDK no Linux (Ubuntu)

Para realizar a configuração do JDK no Linux (nesse exemplo estamos usando Ubuntu) siga as instruções abaixo:

1) Faça download download do JDK.

Pode baixar o JDK com extensão ".gz" ou ".zip".

Obs.:Nesse exemplo também é exibido o download do Maven pois a mesma imagem foi utilizada em outro post.
 


2) Após fazer o download o arquivo foi extraído em uma pasta desejada.

Para configurarmos as variáveis de ambiente, vamos alterar o arquivo ".bashrc".

3) Para isso, abra o terminal e digite "gedit .bashrc".

4) Adicione as variáveis abaixo no final do arquivo .bashrc:

JAVA_HOME=~/Documents/work/jdk1.8.0_111
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH

Conteúdo que foi adicionado no final do arquivo .bashrc:


Obs.: A imagem acima foi exibida após a configuração do JDK + Maven. No caso desse tutorial você adicionará apenas o conteúdo referente ao JDK, conforme descrito no passo 4.

Explicação dos comandos:
- O comando "~" significa que o sistema usará todo o caminho absoluto referente ao seu usuário. Algo parecido com: "/home/usr/seu_usuario/"
- A linha JAVA_HOME=PATH_TO_EXTRACTED_FOLDER estamos declarando essa variável.
Obs.: Repare que nesse momento você precisa informar o local onde extraiu o JDK no seu computador.

- A linha export JAVA_HOME faz com que essa variável possa ser utilizada.
- A linha PATH=$PATH estamos declarando a variável PATH usando a variável $PATH já existente do sistema e estamos adicionando nossas varíaveis. Repare que no PATH estamos declarando o caminho da pasta "/bin".
- E por último, estamos dando o export da variável PATH.

5) Após salvar o arquivo ".bashrc", feche e abra novamente o terminal.

6) Testando se o JDK foi configurado corretamente através do comando "java -version":

Boa sorte! (: