sexta-feira, 19 de agosto de 2016

Comandos básicos MySQL


  • Conectando ao MYSQL

Com o MySQL já instalado na sua maquina, para fazer uma conexão com o servidor MySQL, podemos entrar com o seguinte comando no prompt ou terminal:
mysql -h NOME_DO_SERVIDOR -u NOME_DO_USUARIO

Após dar o comando, o sistema vai pedir a sua senha de usuário. Se você instalou o MySQL no seu próprio PC, você pode usar também localhost no lugar de NOME_DO_SERVIDOR.

Ou você pode se conectar com o root, basta usar o seguinte comando:
mysql -u root -p

  • Criando um banco de dados no MySQL
Para criar um Banco de Dados no MySQL usamos o comando CREATE DATABASE seguido do nome do seu Banco de Dados, uma boa pratica é deixar com o mesmo nome do seu projeto. exemplo:

CREATE DATABASE nome_do_banco;

Para ver todos os bancos de dados existentes no servidor usamos o comando:

SHOW DATABASES;

Em seguida selecionamos/entramos nesse Banco que criamos para podermos criar nossas tabelas, e realizar outras operações. Usando o comando:

USE nome_do_banco;

  • Criando uma Tabela no seu Banco de Dados
Para criarmos uma tabela dentro do nosso Banco de Dados usamos o comando CREATE TABLE seguido do nome da tabela que queremos criar. Exemplo:

CREATE TABLE `usuarios`
`id_usuario` INT (11),
`nome` VARCHAR (255),
`telefone` INT (15),
`data` DATETIME DEFAULT '0000-00-00 00:00:00'
);

O campo id_usuario será um número inteiro com até 11 caracteres, já o campo nome será VARCHAR que significa que é um campo de Texto com 255 caracteres, o campo Telefone que também é um numero inteiro com 15 caracteres, e por fim o campo data e hora DATETIME que por padrão DEFAULT preenche a data seguida da hora nesse formato  0000-00-00 00:00:00
  • Exibindo suas Tabelas
Para exibir as tabelas que foi criada usamos o comando:

SHOW TABLES;

E para ver as informações das suas tabelas, usamos o comando DESCRIBE ou DESC:

DESCRIBE usuarios;
  • Adicionando informações na tabela
Para adicionarmos os dados na nossa tabela usamos o comando  INSERT INTO iseguido do nome da tabela e entre parenteses o nome dos campos, fechamos, abrimos outro parenteses e colocamos as informações para cada campo. Exemplo:

INSERT INTO `usuarios` (`id_usuario`,`nome`,`telefone`, 'data') 
VALUES (1,'Melissa Lobo','22012201', '2016-08-19 12:15:41');

INSERT INTO `usuarios` (`id_usuario`,`nome`,`telefone`, 'data') 
VALUES (1,'Bruno Marinho','99012201', '2016-08-19 12:15:41');
  • Exibindo os Registros da sua Tabela
Para exibir as informações que adicionamos na nossa tabela, usamos o comando SELECT FROM que seleciona toda a tabela, seguido do nome da tabela no caso usuarios; Exemplo:

SELECT FROM usuarios;
  • Excluindo um Registro da sua Tabela
Para aparar alguma informação usamos o comando  DELETE FROM seguido do nome da tabela, seguido do comando WHERE que significa onde, nome da coluna é igual ao nome do valor do campo. Exemplo:

DELETE FROM clientes WHERE nome'Bruno Marinho';
  • Excluindo sua Tabela ou Banco (Para Sempre)
Para excluir a tabela ou o bando inteiro basta usar o comando DROP seguido do nome da tabela, ou nome do Banco de dados, mas lembre-se que ele vai excluir sua tabela ou Bando de Dados inteiro com todos os registros para sempre, por isso tome muito cuidado com esse comando. Exemplo:

Removendo a Tabela:
DROP TABLE nome-da-tabela;
ou, Removendo o Bando de Dados:
DROP DATABASE nome-do-banco;
  • Atualizando um Registro da sua Tabela
Para atualizar alguma informação usamos o comando UPDATE seguido do nome da tabela, seguido de SET que configura o campo para receber o novo valor, onde o id for igual ao que você definir, por isso toda tabela que usamos colocamos o campo id, para que assim fique mais facil localizar, atualizar e excluir um registro. Exemplo:

UPDATE usuarios SET telefone=33003300 WHERE id_usuario= 1;

Bom acho que esses são os básico, se precisarem de mais algum fiquem avontade para perguntar, futuramente posto umas queries mais complexas e legais. 

Melissa Lobo.

terça-feira, 9 de agosto de 2016

Ciclo de vida de uma requisição JSF

O ciclo de vida de uma requisição JSF compreende um conjunto de etapas realizadas pelo Framework para a criação/restauração e exibição das páginas ao usuário. Essas etapas são responsáveis por capturar os dados enviados pela UI, verificar a validade dos mesmos, aplicar esses dados às regras de negócio e exibir o resultado do processamento. Assim, o entendimento deste ciclo é de extrema importância para o desenvolvedor que precisa lidar com este Framework. A Figura abaixo representa as etapas de uma requisição JSF.

Baseando-se no fluxo mostrado, podemos descrever as ações realizadas em cada fase da seguinte maneira:
  • RESTORE_VIEW (Criar ou Restaurar a view): é a primeira fase do JSF e visa criar ou restaurar (no caso de uma página já requisitada) a árvore de componentes de uma página. Caso seja a primeira requisição à página, o framework cria uma nova árvore de componentes e associa a ela e caso não seja a primeira requisição, o framework restaura a árvore de componente já existente.
  • APPLY_REQUEST_VALUES (Aplica valores do usuário): nesta fase são atribuídos os valores que foram enviados na requisição para seus respectivos componentes da árvore de componentes. Como os dados coletados no formulário HTML são transferidos na requisição como String, o JSF também armazena essas informações na árvore de componentes como String;
  • PROCESS_VALIDATIONS (Certifica que os valores estão corretos): depois de completada a fase anterior, é iniciada a fase de processar conversões e validações como, por exemplo, validar uma formatação de uma data ou até mesmo verificar se determinado campo está sendo informado. Assim, caso ocorra algum erro, as informações são armazenadas no FacesContext e o fluxo é direcionado para a fase Renderiza a view para construir a resposta. Caso contrário, o fluxo segue para a próxima fase.
  • UPDATE_MODEL_VALUES (Atualiza o modelo com valores válidos): se tudo ocorreu bem na fase anterior, o JSF já tem certeza que pode atualizar os valores dos atributos do bean gerenciado com os valores contidos na árvore de componentes através da utilização dos métodos get e set;
  • INVOKE_APPLICATION (Busca uma nova view se necessário): depois de passar por todas as fases anteriores, é nesta fase que serão tratados as ações e os eventos da lógica de negócio da aplicação. É aqui que o desenvolvedor vai determinar o que será feito com o que foi aplicado ao modelo. Assim, podemos determinar nesta fase qual será a próxima página que será exibida para o usuário;
  • RENDER_RESPONSE (Renderiza a view): finalmente o ciclo de vida chega ao fim. Nesta fase será feita a codificação da árvore de componentes, transformando-a em HTML (+ CSS e JS) e exibindo-a no navegador do cliente.

segunda-feira, 8 de agosto de 2016

O que é o JavaServer Faces ?

O JSF é um Framework MVC para sistemas web baseado em componentes que auxilia bastante a construção de aplicações desse tipo com a tecnologia Java. Esses componentes são colocados em formulários de páginas e ligados a objetos Java de forma a prover suporte a várias características presentes no Framework, tais como: mecanismos de manipulação de eventos, validações de informações enviadas pelos clientes, navegação entre páginas, entre outras. Assim, com essa tecnologia torna-se mais fácil a construção de interfaces com o usuário pelo fato de o desenvolvedor poder implementar as aplicações simplesmente utilizando componentes visuais reusáveis.

Devido à existência destes componentes na interface, toda página JSF é um documento XML com namespaces, recurso utilizado para importar e possibilitar o uso de componentes HTML do JSF. Alguns exemplos de namespaces são: xmlns:h, xmlns:f e xmlns:ui.

A partir da declaração destes os componentes são utilizados na interface com o usuário e ligados a objetos Java – conhecidos como JavaBeans – através da utilização da tag <h:form/> e dos métodos get e set das classes. Dessa forma, os componentes de UI que serão vinculados às propriedades de um JavaBean devem, necessariamente, fazer parte de um formulário JSF, pois é através dele que o JSF envia e recebe dados do servidor. A seguir é apresentada a declaração da tag <h:form/>:

   <h:form id="form1">
       <!-- componentes JSF de interface com o usuário devem ser colocados aqui -->
  </h:form> 

No lado do servidor, cada JavaBean que tenha atributo vinculado a alguma página deve possuir a anotação @ManagedBean sobre o nome da classe, para que seja gerenciado pelo framework JSF e permita a ligação entre as regras de negócio da aplicação e a camada de visualização. Essa anotação possui ainda um atributo chamado name, não obrigatório, que representa o nome dado ao bean gerenciado. Ademais, para definir o ciclo de vida de cada um dos beans conforme a necessidade do projeto, é possível especificar o seu escopo fazendo uso de uma das anotações analisadas a seguir:

@ApplicationScoped: especifica que existirá somente uma instância da classe em toda a aplicação, ou seja, todos os usuários terão acesso à mesma instância;

@SessionScoped: garante a existência de uma instância para cada usuário que utiliza a aplicação;

@ViewScoped: relaciona a instância do bean gerenciado à página. Assim, enquanto essa página estiver sendo manipulada pelo usuário, o bean estará disponível;

@RequestScoped: garante que existirá uma instância pelo tempo de duração da requisição feita pelo usuário;

@NoneScoped: cada vez que houver uma chamada a uma propriedade ou método da classe bean, será criada uma nova instância. Neste caso a instância não terá ligação com qualquer escopo da aplicação;

@CustomScoped: essa anotação permite a criação de escopos personalizados. Para isso, a instância de uma classe bean é armazenada em uma interface do tipo java.util.Map <K,V> e disponibilizada para uma página ou um conjunto de páginas da aplicação.

sexta-feira, 22 de julho de 2016

Padrões de nomenclatura

Classes e interfaces - A primeira letra deve ser maiúscula e, se várias palavras forem escritas juntas para formar o nome, a primeira letra de cada palavra interna deve ser maiúscula (um formato chamado de "camelCase").
Para classes, os nomes devem normalmente ser substantivos(nome de "coisas"). Por exemplo: Dog//Cachorro
Para interfaces, os nomes devem normalmente ser adjetivos(características, qualidade), Por exemplo: Runnable // Executável

Métodos - A primeira letra deve ser minúscula, e depois as regras camelCase normais devem ser usadas. Além disso, os nomes devem normalmente ser pares de verbo-substantivo. Por exemplo: doCalculation // fazerCálculo

Variáveis - Como nos métodos, o formato camelCase deve ser usado, comecando com uma letra minúscula. É recomendado usar nomes curtos e significativos. Por exemplo:  buttonWidth // larguraDoBotao

Constantes - As constantes Java sào criadas marcando-se variáveis como static e final. Elas devem ser nomeadas usando-se letras maiúsculas como caracteres underscore como separadores. Por exemplo: MIN_HEIGHT // ALTURA_MINIMA

Exceções - Os nomes devem revelar a causa da exceção e devem terminar com o sufixo que representa a sua hierarquia de exceção: Exception ou Error. Por exemplo, em ArithemeticException sabemos que se trata de uma classe derivada de Exception, e não de Error, que foi causada por algum problema em uma operação aritmética.


Algumas classes com utilidade especifica têm formas especificas de serem nomeadas. A seguir são listados alguns modelos de nomenclatura para estes conjuntos de classes, baseados nas regras anteriores.

Entidades - O nome de uma entidade é uma exceção ao principio de Preferência de Domínio Técnico. Nomes de entidades não devem conter sufixo ou prefixos de nenhum tipo, nem mesmo o popular Entity. Nomes de entidades, são exatamente isso, nomes. Substantivos que são recolhidos do dominio do problema e que normalmente guiam o objetivo ou a operação do software.

Repositório - A nomenclatura do padrão Repository segue o modelo: [Entidade] Repository.
Esta nomenclatura segue o principio de Preferência de Dominio Técnico deixando o nome do padrão no fim do nome. O nome é precedido pelo nome da entidade a que este repositório se refere.

Serviço - O padrão Service tem duas peças: a interface do serviço e a implementação do serviço. A nomenclatura para a interface do padrão Service segue o modelo: [Proposito]Service. Esta nomenclatura segue o principio de Preferência de Dominio Tecnico deixando o nome do padrão no fim do nome. O nome é precedido pela descrição do proposito em forma resumida, por exemplo: EmailSendingService.
O nome da implementação do serviço segue o modelo: [Tecnologia][Proposito]Service, em que ao nome da interface do serviço é adicionado um prefixo que denota o tipo de tecnologia ou algoritmo que o serviço utiliza para satisfazer a interface, por exemplo: JavaMailEmailSendingService

DAO - O padrão DAO, semelhante ao padrão Service tem duas peças: a interface do serviço/estratégia e a implementação. Para classes de DAO associados a entidades, o nome da entidade é adicionado como prefixo para distinguir entre os contratos de cada entidade. O nome da interface segue o modelo [Entidade]DAO e o da implementação o modelo: [Tecnologia][Entidade]DAO. Esta nomenclatura segue o principio de Preferência de Dominio Técnico deixando o nome do padrão no fim do nome.
O nome da implementação começa com o nome da tecnologia de persistência que a implementação do DAO usa, seguindo pelo nome da interface que está sendo implementada, por exemplo JdbcCustomerDAO.