Categorias
Java

[Vídeo] Cadastro de usuário feito em JPA+Hibernate+JSF

Nessa postagem vou tratar sobre alguns dos principais frameworks e API’s de desenvolvimento em java, voltados a persistência de dados, que são: JPA, Hibernate e JSF. JPA, ou Java Persistence API, é uma plataforma de desenvolvimento melhor estruturada e baseado no modelo de Mapeamento-Objeto-Relacional(ORM), que visa a criação de entidades e a persistência dos dados no banco, é implementada pelo Hibernate, sendo uma API mais robusta porém de linguagem mais simplificada e eficaz do que outros modelos como o JDBC.

Hibernate por sua vez, é um dos frameworks mais utilizados que implementa o modelo JPA, facilitando a conexão com banco a partir de interfaces gráficas que facilitam a definição do arquivo de configuração do sistema “persistence.xml”, a geração de entidades a partir da conexão com o banco de dados, além de uma linguagem mais específica de consulta como HQL(Hibernate Query Language) ou mesmo JPQL(Java Persistence Query Language), porém o sistema em java não irá funcionar sem um framework baseado no modelo MVC que será a view com o usuário, o JSF faz essa função.

O JSF, ou JavaServer Faces,  será a interface com o usuário voltado a execução dos beans a partir de ações, surgiu como solução aos problemas do JSP(JavaServer Pages), que vinha caindo em desuso, porém nada é perfeito e apesar de usa-lo nesse sistema e ainda ser muito usado atualmente também vem caindo em desuso, recomendo a leitura desse artigo, mas vamos ao que interessa, à seguir o vídeo que mostra um exemplo de cadastro em um sistema feito em JPA.

Categorias
Java

[Vídeo] Sistema Supermercado(SSJA) – Comprando produto e atualizando saldo

Aqui apresento alguns detalhes sobre o WindowBuilder, o qual é o plugin para Eclipse que implementa a interface visual do Swing, propriedades e alguns componentes básicos para um sistema simples em java desktop. É importante atentar para criação das principais panels do sistema, no final do vídeo apresento alguns testes de compra de usuário, como: qual e cada caso são permitidos, atualização de saldo após a compra e produtos insuficientes no estoque.

Categorias
Java

CRUD simples para alteração e exclusão de dados

Todo sistema possui uma tela de alteração, aqui é apresentado o funcionamento, por meio do jdbc, de alteração de dados do usuário, assim como em crud cadastro e crud consulta, também foram usados ResultSet e PreparedStatment do pacote java.sql para o gerenciamento dos dados entre o java e o BD supermercado.

O que é importante ressaltar no método “alterar(String consulta, Usuario usuario)”, é que ele precisa de dois parâmetros porque um representa a variável de consulta – que ainda será definida – e outro do objeto usuario que será atualizado, além de ser do tipo boolean para poder retornar uma mensagem ao usuário após a execução do método, por tanto o código fonte ficará da seguinte forma:

alterar
alterar

O método “excluir(String cpf)” é o mais simples, o qual vai deletar o usuário a partir do cpf informado, assim sendo:

excluir
excluir
Categorias
SQL

SQL: Paginação, Cláusulas e DTL

Paginação

A paginação no sql funciona como uma forma de limitar o numero de registros retornados e funciona da seguinte forma:

  1. Limit

Exemplo: Exibindo 8 usuarios.

Select usuário from funcionário where salario>1500 limit 8.

  1. Offset

Não exibe registros anteriores ao número informado no offset.

Exemplo: Exibindo os usuários a partir do oitavo registro.

Select usuario from funcionario where salario>1500 offset 8.

Obs.: No mysql o offset não é declarado, mas usado em conjunto com o limit, como mostrado no exemplo a seguir:

Select usuario from funcionario where salario>1500 limit 2, 2.

Cláusulas

São funcionalidades importantes que ajudam a gerenciar os registros, como: Order by, Group by, Max, Min, Desc, que faz a ordem do registro a partir de um campo definido, fazem o agrupamento do(s) campo(s), o valor máximo, o valor mínimo e ordem decrescente, respectivamente.

Exemplo: Retornando valor máximo do salário.

Select max(salario) from usuário.

Exemplo: Exibe nome do usuário por ordem decrescente do id:

Select nome from usuário order by id desc;

Having

Filtro de seleção para categorias que deve ser combinado com o Group By.

Select nome from funcionário group by salario having salario >1500;

Subqueries

Filtro de seleção baseado em uma lista, uma consulta query dentro de outra, podendo assim tornar uma consulta ainda mais específica, como mostrado nos 2 exemplos a seguir com in e not in:

Select nome from funcionário where departamento in (‘ti’,’marketing’);

Select nome from funcionário where departamento in(select departamento from funcionário group by salario having avg(salario)>1500)

Data Control Language

Como já foi dito anteriormente em SQL: conceitos e propriedades, é a linguagem de controle do BD, partindo do princípio da criação de usuários por meio da DDL, pode-se criar ou deletar usuários.

Sintaxe: create ‘nome’ @ ‘maquina de acesso do usuario’

Create user ‘augusto’@’localhost’/ create user ‘augusto’@’%’.

Grant: Libera acesso de bd, tabelas, colunas, registro a um usuário.

Exemplo: Grant all on escola.* to ‘augusto’@’%’.

Revoke: Bloqueia o acesso bd, tabelas, colunas, registro a um usuário.

Exemplo: Revoke all on escola.professor from ‘fernanda’@’%’.

Categorias
SQL

SQL: Relacionamentos

Equi Join: Funciona como o Join padrão porém obrigatoriamente as chaves pk e fk devem ter o mesmo nome, como consequência a coluna cpf aparecerá uma única vez. Obs: o termo “Equi” não precisa ser digitado, o using já define este join.

Ex: select *from pessoa join material using (cpf)

Non Equi Join: Quando as chaves pk e fk tem nomes diferentes.

Outer Join, Left Join ou Left Outer Join: Exibem todos os registros da relação, inclusive os que existem somente na tabela consultada.

Ex: Select *from pessoas left join veiculos on pessoas.cpf = veiculos.cpf

leftjoin
leftjoin

Right Join ou Right Outer Join: Mesmo processo do left join porém exibe os registros que só existem na tabela relacionada.

Full Outer Join ou full join: Combinação do left com o right, traz todos os registros de ambas tabelas independentemente de haver relação entre os registros.

Self Join: Relação da tabela com ela mesma.

Ex: Select a.nome,b.nome as indicado_por from pessoas a join pessoas b on a.indicado = b.cpf

selfjoin
selfjoin
Categorias
SQL

SQL: Conceitos, Licenças e Propriedades

Structured Query Language(Linguagem de Consulta Estruturada), ou SQL, é a principal linguagem de consulta estruturada em BD, capaz de fazer o gerenciamento de todos os dados baseados no modelo relacional, a partir dos SGBD’s que a implementam, os principais são: MySQL, Postgres, Firebird, Oracle Express, SQL Server Express.

É formada por: DDL(Data Definition Language): Responsável pelo gerenciamento do BD com Alter, Create e Drop. DML(Data Manipulation Language): Faz a gerência dos registros na tabela com Insert, Update, Delete. DQL(Data Query Language): Responsável por fazer as consultas com Select. DCL(Data Control Language): Libera ou bloqueia acesso/gerenciamento do BD, Grant e Revoke. DTL(Data Transaction Language): Inicia a transação, executa no BD com sucesso e anula a transação, Start Transaction, Commit, Rollback respectivamente.

Licenças: Licença Comercial Necessária: MySQL, Oracle e SQL Server. Licença Estudantil Disponibilizada: MySQL, Postgres, Firebird, Oracle Express, SQL Server Express.

Propriedades: Not Null, Chaves, Unsigned, Signed.

1. Not Null: Define o campo como não nulo, ou seja, obrigatoriamente deve receber um valor.

2. Chaves: Podem ser chave primária(primary key), secundária(foreign key) ou composta, e não podem ser nulas. A primária serve para identificar o campo como único assim evitando registros duplicados na tabela. Secundária funciona como campo que fará o link entre uma ou mais tabelas, para assim poder retornar uma nova tabela com os registros dos campos das tabelas consultadas, desde que possuam o valor do campo em comum. Composta usa mais de um campo na tabela como chave, exemplo nome+endereço definem uma chave composta pois não há mais de 1 pessoa com nome e endereço exatamente iguais, logo funcionaria em um bd de pequeno porte, mas em um de grande porte não seria a solução mais indicada.

3. Unsigned: remove o intervalo negativo do tamanho do campo e acrescenta no positivo, exemplo: o TinyInt com intervalo de tamanho indo de -127 à +128, muda para +255.

Categorias
Java

CRUD SIMPLES PARA CONSULTA DE USUARIOS

Aqui será apresentada uma breve explicação sobre ResultSet e sua aplicação, mas primeiramente é preciso lembrar que uma consulta retorna valores, então o método não pode ser void, mas sim do tipo Usuario, além do que o retorno será baseado na consulta feita por um usuário por parâmetro, então: “public Usuario consulta(String consulta)”, com a variável “String consulta” representando a pesquisa pelo usuário.

A explicação sobre o PreparedStatement já foi dada no post anterior “CRUD SIMPLES PARA CADASTRO DE USUÁRIOS“, a única diferença é que dessa vez o retorno dos dados no BD pede que seja usado o ResultSet do pacote java.sql, representado pelo objeto “rs” ele recebe a execução “ps.executeQuery()”, após isso é feito a criação e inicialização de um objeto usuario e depois um laço em função da quantidade de dados total para retorno “while(rs.next())”, o objeto do ResultSet pega os dados da tabela usuario dentro do bd supermercado e seta no usuario criado, em “usuario.set…(rs.getString(“nome da coluna da tabela“))” e por fim é feito o retorno do usuario carregado com os dados.

consulta.java
consulta.java
Categorias
Java

CRUD simples para cadastro de usuarios

Para usar o SSJA o usuario deverá possuir cadastro, logo haverá uma tela de cadastro responsável por inserir todos os dados do usuário, ou seja, vai setar todos os atributos definidos na classe Usuario.java do pacote model.

Abaixo, é mostrado a classe “CRUD” e o código fonte da mesma, que vai criar a nova conexão fazendo o getConexao da classe “Conexao”, pelo construtor da classe. O método “inserir(Usuario usuario)” vai criar o objeto de Usuario, pegando todos os dados inseridos pelo usuario, por parâmetro e depois setando no bd.

A string “sql” recebe o script de inserção de usuário, ou DML: “insert into usuario(…)values(…)”. O objeto “con” que implementa a classe Connection do pacote java.sql, executa a instrução responsável por gerenciar os scripts sql, a partir do código “con.prepareStatement(sql)”. O objeto “ps” será usado para fazer a inserção de cada atributo no BD em “ps.setString(…, usuario.get…())” e logo após fará a execução em “ps.execute()”. Caso ocorra algum erro será feito o tratamento em “catch(SQLException e)” e logo após os objetos ps e con são fechados.

CRUD.java
CRUD.java
Categorias
Java

Pacote model: Classes Usuario, Produto e CategoriaProduto

No sistema “SSJA”, primeiramente serão criadas 3 classes principais, “Usuario”, “Produto” e “CategoriaProduto”, que serão responsáveis pelo projeto inicial do sistema e fazem parte de qualquer sistema gerenciador de estoque.

O pacote “model” terá as 3 classes, e cada uma terá seus respectivos atributos relacionados assim como seus getters e setters.

Pacote model e Usuario.java
Pacote model e Usuario.java
produto.java
Produto.java
CategoriaProduto.java
CategoriaProduto.java
Categorias
Java

Conexão JDBC com Java e Postgresql

Uma conexão com BD é essencial para qualquer aplicação web, independente da linguagem a ser utilizada, aqui é mostrado um exemplo de uma conexão simples com o banco “supermercado” no SGBD PostgreSQL e o sistema java “SSJA”.

Na primeira imagem é mostrado o local e código fonte do BD supermercado. Na segunda imagem é mostrado o local, código fonte do sistema e o driver do postgresql, necessário para a conexão entre o sistema “SSJA” e o BD “supermercado”.

O “class.forName” especifica o driver a ser utilizado, logo abaixo o “DriverManager.getConnection” identifica o host de conexão e porta, o BD, seguidos do nome de usuário do servidor e a senha.

supermercadobd
Local e código fonte de criação do BD.
Classe Conexao.java
Classe Conexao.java