Primeiras aulas do curso Java e JDBC: trabalhando com um banco de dados

Java e JDBC: trabalhando com um banco de dados

Introdução ao JDBC e o padrão Factory - Introdução

Fala, aluno, tudo bom? Aqui quem está falando é o João Vitor e eu serei o seu instrutor no treinamento sobre JDBC. Nesse curso, nós aprenderemos a configurar um banco de dados e fazer com que a nossa aplicação faça requisições a ele. Nós veremos como recuperar uma conexão com o nosso banco de dados, veremos como fechar essa conexão.

[00:19] Veremos também sobre transações e, além de tudo, nós também vamos executar comandos como Insert, Delete, tudo isso a partir da nossa aplicação. Nós iremos utilizar as classes e interfaces do pacote java.sql e veremos todos os conceitos necessários para que você possa trabalhar com as melhores práticas.

A ideia é que ao final do curso, vocês sairão confiantes e com total conhecimento sobre o funcionamento de cada um dos recursos. E aí, vocês estão preparados? Então é isso, vejo você no próximo vídeo.

Introdução ao JDBC e o padrão Factory - Ambiente e versões

Olá aluno, tudo bom? Hoje em dia, ao pensar em sistemas, a maioria deles são provedores de serviços. Pensando aqui na Alura, que é uma provedora de cursos online, no momento em que você vai fazer a matrícula, é necessário selecionar os campos de texto na página da Alura e inserir algumas informações para que você de fato tenha acesso aos seus cursos online.

Então, preenchendo aqui o formulário que eles solicitam, eu vou agora selecionar, vou inserir qual é a minha informação de pagamento, então meu cartão de crédito, o nome que está no meu cartão de crédito, o código de segurança. Uma vez que eu termine de preencher as minhas informações corretamente, eu concluo o pagamento e vou ter acesso aos cursos.

Uma coisa a se atentar aqui é sobre as informações que nós estamos fornecendo para a Alura e uma atenção, porque são informações bem críticas, ou seja, eu estou informando o número do meu cartão de crédito, estou informando o meu CPF. Essas informações, na mão de uma pessoa que não seja confiável, pode te trazer um prejuízo financeiro muito grande.

Então onde salvar essas informações? Onde eu persisto essas informações de forma segura? Hoje em dia, o mais comum que tem no mercado são as bases de dados relacionais. Falando em banco de dados relacionais, nós temos muitos, nós temos o PostgreSQL, nós temos o SQL Server, que é da Microsoft, e nós temos o MySQL, que hoje eu me arrisco a dizer que é o mais famoso entre os bancos de dados.

E vai ser ele que nós vamos utilizar para as próximas aulas, vamos utilizar ele como o nosso banco de dados do nosso ambiente. Em "mysql.com/downloads/" - lembrando que o site é "mysql.com", nós vamos rolar a página para baixo e vamos ter um link "MySQL Community (GLP) Downloads". É nele que nós vamos clicar. Eu vou baixar o "MySQL Installer for Windows".

Para nós não termos problemas de compatibilidade, nós vamos utilizar a versão 8.0.18. Você, que está chegando para fazer o curso, se tiver novas versões, mesmo assim, eu te peço encarecidamente para você manter na versão 8.0.18. Isso evita que, mais na frente, que nós vamos utilizar Querys mais avançadas, enfim, que não tenha nenhum problema, que todo mundo consiga fazer todos os comandos que nós vamos trabalhar nas aulas.

Então tem duas opções de download e nós vamos fazer o download da segunda opção, que é a "mysql-installer-community-8.0.18.msi". Vocês podem instalar no seu diretório de preferência. Eu vou botar a minha na pasta "Downloads". Na verdade, eu já fiz o download do instalador. E agora eu vou na pasta "Downloads" e nós vamos de fato instalar o MySQL na nossa máquina.

O MySQL, ele está aqui. Clico duas vezes no arquivo e vamos instalar. Agora que todas as configurações foram aplicadas, nós vamos finalizar a instalação do nosso MySQL. Muito bom, "configuração completa". Dou um "Next" e "Finish". Agora, a intenção é testar o nosso banco de dados, é nós criarmos Database, criarmos tabelas. E nós vamos fazer isso agora.

No momento da instalação, o MySQL nos provê um MySQL 8.0 Command Line Client no menu "Iniciar" do Windows. É ele que nós vamos utilizar. Para ficar melhor a visualização para você, aluno, eu vou, clico com o botão direito sobre a barra de título do prompt de comando, vou em "Propriedades", vou mudar a fonte para "Lucida Console", vou botar o tamanho da fonte em "16".

Em "Layout", eu vou aumentar um pouco essa janela, vou botar 150x80, vamos ver se vai ficar bom. Ficou bom. Agora a nossa senha padrão root. Estamos já interagindo com o MySQL. Ele bota as versões como eu informei para vocês, 8.0.18 é a que nós vamos utilizar no curso. Mesmo que tenha mais nova, vamos manter essa versão.

A primeira coisa que nós vamos fazer é criar uma Database para nós. Então vou botar CREATE DATABASE e o nosso curso vai ter uma loja virtual, então CREATE DATABASE loja_virtual;. Criei a nossa Database, ele retornou um "Query ok", então Database criada com sucesso.

Eu vou colocar um USE loja_virtual; e agora nós mudamos para a nossa Database que acabamos de criar. A nossa Database está criada. Agora eu quero que tenha uma tabela chamada produto, que vai ter um produto nessa nossa loja virtual, e esse produto, eu quero que ele tenha um Id, um nome e uma descrição.

Então nós vamos fazer um CREATE TABLE PRODUTO, ele vai ter um Id, que vai ser o inteiro AUTO_INCREMENT, ficando CREATE TABLE PRODUTO (id INT AUTO_INCREMENT,. Isso quer dizer que a cada nova inserção de um produto, o Id, ele vai ser inserido dinamicamente, então o primeiro produto o Id vai ser 1, o segundo Id vai ser 2, e assim sucessivamente.

O nome, ele é uma string, ele é alguns caracteres, então no nosso banco de dados, isso é um VARCHAR, e eu quero um VARCHAR de 50 caracteres, e o nome também não vai poder ser nulo, ou seja, sempre vou ter que informar o meu nome. Então a linha fica AUTO_INCREMENT, ficando CREATE TABLE PRODUTO (id INT AUTO_INCREMENT, nome VARCHAR(50) NOT NULL,.

descricao, descrição também vai ser um VARCHAR 255 - espera que ficou faltando o VARCHAR. E a nossa chave primária, a nossa PRIMARY KEY vai ser o Id. Então AUTO_INCREMENT, ficando CREATE TABLE PRODUTO (id INT AUTO_INCREMENT, nome VARCHAR(50) NOT NULL, descricao VARCHAR(255), PRIMARY KEY (id)).

E vou botar um Engine = InnoDB;, que significa que eu quero que seja aceita a transação, ficando AUTO_INCREMENT, ficando CREATE TABLE PRODUTO (id INT AUTO_INCREMENT, nome VARCHAR(50) NOT NULL, descricao VARCHAR(255), PRIMARY KEY (id)) Engine = InnoDB;. Ele deu um erro, deixa eu ver o que foi. Isso, não tinha vírgula após PRIMARY KEY (id)).

Criamos a nossa tabela. Se eu fizer agora um SELECT * FROM PRODUTO;, nós vamos ver que ele vai retornar para nós um Empty set, que significa que está vazio, que não tem nada, nós acabamos de criar essa tabela, de fato não teria produto.

Então vamos inserir um produto nessa tabela, que vai ter o nome, a descrição e os valores serão: quero um notebook, um notebook Samsung. INSERT INTO PRODUTO (nome, descricao) VALUES ('NOTEBOOK', 'NOTEBOOK SAMSUNG');. Está errado aqui, descricao. O que eu? Na verdade, eu acho que eu errei - é verdade, eu escrevi errado na hora de criar a tabela e agora ele está errado.

Mas isso aqui nós corrigimos, é só um só um nome mesmo, isso depois fazemos um ALTER TABLE, que nas próximas aulas vamos conseguir ver isso melhor. Mas agora, se vocês forem reparar aqui, se eu fizer o mesmo comando de antes, SELECT * FROM PRODUTO, nós temos já o nosso primeiro produto.

É importante, só mostrar para vocês aqui, com Id já inserido, ou seja, o nosso Id foi inserido sem precisarmos controlar ele, sem precisar nós mesmos, manualmente, colocar o Id. Nós vimos agora que o nosso banco de dados está funcionando, nós inserimos um produto na nossa tabela de produtos, na nossa Database que foi criada.

Então, agora, o próximo passo é fazer com que uma aplicação em Java converse com o nosso banco de dados. Então, para a próxima aula, eu espero o ambiente de vocês configurado. E aqui também é importante mostrar para vocês que eu vou utilizar o Eclipse Jee 2019-6, mas você pode utilizar qualquer outra versão, tem a June, tem versões mais antigas no Eclipse, que não vai ter diferença no nosso curso se você estiver com ela.

O importante é você ter uma IDE - e pode ser outra também, não só Eclipse, para que nós possamos ter uma facilidade na hora de escrever os nossos códigos. Uma outra coisa também, que é bom vocês verificarem, é a versão do Java. No meu caso, eu estou na 11, mas nada impede de vocês utilizarem outras versões.

Acredito que da versão 6 para frente não vai ter nenhum problema de compatibilidade. Claro que quanto mais nova a versão, às vezes pode ter certas facilidades na hora de trabalhar com o código, mas acredito que nós não vamos entrar nesse nível de código. Então da versão 6 em diante está tudo certo. Então é isso aluno, espero que você tenha gostado e até o próximo vídeo.

Introdução ao JDBC e o padrão Factory - Usando um banco de dados

No desenho, no começo do vídeo, é mostrado o comando necessário para inserir um produto: INSERT INTO PRODUTO ('nome', 'descricao') VALUES ('Notebook', 'Notebook Samsung'); Esse comando não irá funcionar caso seja executado, pois não há aspas simples (') nos atributos da tabela. O correto seria: INSERT INTO PRODUTO (nome, descricao) VALUES ('Notebook', 'Notebook Samsung');

Fala, aluno, tudo bom? Na última aula, nós aprendemos como configurar o nosso banco de dados. Uma vez configurado, nós conseguimos recuperar a conexão, nós conseguimos nos conectar no banco de dados e realizar alguns comandos. No nosso caso, nós inserimos um produto na nossa tabela Produto.

Esquema iniciado no elemento "Aplicação Java" se conectando ao elemento "JDBC - Java Database Conectivity" e "Java.sql", que se conectam ao elemento "Driver MySql Java" e ao elemento "Driver SQL Server Java", os quais se conectam respectivamente aos databases "MySQL e "SQLServer".

A nossa motivação agora é que nós consigamos fazer essa mesma coisa, recuperar uma conexão, ou inserir um produto, ou listar um produto, mas agora a partir da nossa aplicação Java. A grande questão aqui é que a nossa aplicação, ela não consegue conversar com o nosso banco de dados de forma nativa.

Aqui nós temos uma aplicação Java rodando Java, e aqui, do outro lado, nós temos um banco de dados que roda um protocolo conhecido só por ele. Então o Java não tem como chegar no banco de dados e simplesmente fazer uma conexão com o MySQL, por exemplo. Então, como nós vamos conseguir fazer essa conexão?

Para facilitar a vida do desenvolvedor, os desenvolvedores, a equipe do MySQL, ela criou para nós uma biblioteca Java. Uma biblioteca Java aqui, entre a aplicação e o banco de dados. A biblioteca vai conhecer todo esse lado do MySQL e vai expor para a nossa aplicação, então ela vai expor de uma forma que a nossa aplicação conheça tudo o que eu preciso para me comunicar com o MySQL.

Então essa biblioteca vai ser o nosso famoso JAR, o JAR que nós já conhecemos da nossa linguagem Java. Então esse JAR, ele é desenvolvido pela equipe de desenvolvimento do MySQL. Quando a minha aplicação chega no JAR, eu tenho alguns conjuntos no JAR de classes, de interfaces, que dado determinado comando, vai conseguir chegar no meu banco de dados.

E essa biblioteca aqui, ela tem um nome, ela é na verdade um driver. Então para ficar mais bonito o desenho, vamos colocar o nome que é dado para essa biblioteca, esse JAR. Então ela é um driver. Então tenho aqui o meu driver MySQL Java. Agora, com esse driver, se eu quiser me comunicar, por exemplo, com outro banco de dados, que eu vou pegar, por exemplo, um SQL Server.

Então agora eu não tenho mais um MySQL, eu tenho um SQL Server. Eu vou precisar só pegar um driver SQL, que a nossa aplicação vai conseguir se comunicar com o banco de dados SQL Server. Então seria algo semelhante a um driver SQL Server do Java. Uma vez que tenho esse novo driver, agora a minha aplicação passa a conhecer o protocolo que é utilizado no SQL Server. Então ligar aqui para o nosso desenho ficar bonito.

Só que nesse segundo banco, já começamos a perceber um problema. Porque, o que acontece? No primeiro driver eu tenho um conjunto de classes e interfaces do MySQL. No segundo driver, eu tenho um conjunto de classe e interfaces do SQL Server. Então dificilmente nós vamos ter chamadas iguais, vamos ter classes iguais.

Então, para representar o que eu estou querendo falar, vamos supor que eu quero pegar uma conexão do MySQL e na classe MySqlConnector, por exemplo, eu tenho um MySqlConnector.getConnection();, que vai receber alguns parâmetros, como (usuário, ), que nós passamos para o nosso banco de dados, MySqlConnector.getConnection(usuario, senha, db, servidor); e etc.

Muito dificilmente vamos ter algo igual do lado do SQL Server. Então, por exemplo, vamos supor que o pessoal do SQL Server criou aqui uma classe SqlServerConnectionProvider e tem um método SqlServerConnectionProvider.connect(), que também pode receber um SqlServerConnectionProvider.connect(usuário, senha);, enfim, pode receber os atributos que precisam de conexão com o SQL Server.

Então aqui nós já vemos um problema: se eu precisar mudar do MySQL para o SQL Server, eu vou ter que, na hora de pegar a conexão, vou ter que alterar a chamada desse método para eu poder utilizar um outro tipo de banco. Aqui nós estamos trabalhando com duas opções, mas ainda temos bancos como PostgreSQL e qualquer um que quiséssemos nos conectar dessa maneira, seria bem trabalhoso.

Então foi aí que o Java nos facilitou com uma camada de abstração, que vai ficar antes desses drivers. Então aqui, para ajeitar o nosso desenho, vamos mudar a forma como estávamos pensando aqui. E eu tenho aqui, após a aplicação Java, essa abstração, que vai ficar entre os drivers e vai ficar entre a minha aplicação.

Essa abstração, ela é chamada de JDBC, ou melhor dizendo, Java Database - calma, ele não pulou linha, ficou ruim de enxergar. Então vai ser Java Database Connectivity. Agora, esse JDBC também vai ter uma abstração, ou seja, essas bibliotecas, os drivers aqui, deverão implementar os métodos que eu tenho no meu JDBC. Agora a minha aplicação só precisa conhecer esse JDBC.

Então com a minha aplicação conhecendo JDBC, o JDBC dado algum comando, ele vai saber para qual aplicação ou para qual banco de dados que eu quero me conectar. Esse JDBC nada mais é do que o nosso pacote java.sql. Então tudo o que tem dentro de java.sql, é o nosso JDBC, essa nossa camada, essa nossa abstração da conexão com o banco de dados.

E para conseguirmos pegar uma conexão com qualquer banco de dados que quisermos nos comunicar, eu vou ter no JDBC uma interface chamada “Connection com” e eu tenho no java.sql um Connection con = DriverManager();, que ele vai pegar uma conexão. Como ele vai saber qual é a conexão que é para recuperar? Dentro dos parênteses, eu vou ter uma Connection con = DriverManager(UrlDeConexao);.

Com essa URL, eu vou passar qual é o tipo do banco de dados que eu quero me comunicar, eu vou falar qual é o meu usuário, qual é a minha senha, vou falar onde que está esse banco de dados e qual é a minha Database. Uma vez que eu tenho aqui um connection, eu tenho a minha conexão recuperada, consigo agora, da minha aplicação, realizar qualquer comando que eu quiser.

Então nesse desenho, nós já conseguimos ver que dessa maneira, pouco importa qual é o tipo de banco que eu vou ter do outro lado. Com a minha camada de abstração, com as minhas interfaces e com esse conjunto de classes que o JDBC traz para nós, essa conexão, para nós, fica bem mais simples, fica bem mais fácil de se conectar a um banco de dados. Então é isso, aluno. Espero que tenham gostado e até a próxima aula.

Sobre o curso Java e JDBC: trabalhando com um banco de dados

O curso Java e JDBC: trabalhando com um banco de dados possui 256 minutos de vídeos, em um total de 73 atividades. Gostou? Conheça nossos outros cursos de Java em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Java acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas