Você está na página 1de 21

Criandoumcadastrodeusurioem

Java
OobjetivodesteartigodesenvolverumaaplicaoemJSE(Java
StandardEdition)deinserodedadosutilizandoalgunspadresde
projeto.Paraisto,utilizaremosaIDENetBeans(nesteexemploutilizo
averso6.5.1)eobancodedadosMySQLServer(utilizoverso5.5).
claroqueoleitorpodeusaraversomaisadaptvelaoseu
conhecimento.
BrunoFreixo05/01/2012 Comentrios

Oobjetivodesteartigointroduziraoinicianteconceitosprticos
importantesutilizadosnodesenvolvimentodeumaaplicao
desktopemJSE(JavaStandardEdition).Estaaplicao,em
particular,ircadastrardadosdeumformulriodeentrada.Com
isso,vamosaprenderausarpacotes(packages)persistnciacom
JDBCePadresdeProjetocomoFactoryeDAOumaintroduoao
padrodearquiteturaMVC.Paraisto,utilizaremosaIDENetBeans
(nesteexemploutilizoaverso6.5.1)eobancodedadosMySQL
Server(utilizoverso5.5).claroqueoleitorpodeusaraverso
maisadaptvelaoseuconhecimento.

Dica:CursodeJavapassoapassoparainiciantes.

Subentendesequeparaexecuodesteartigo,oleitorjtenha
algumconhecimentobsicoprvionatecnologiaJava.
OBS.:estetutorialpropositalmentenoutilizaframeworkpara
desenvolvimentoMVC(Struts,Spring)enemferramentaORM
(Hibernate)justamenteparaforaroleitoraentender"como
funcionaportrsdosbastidores"esefamiliarizarcomconceitos
bsicosdeutilizaodalinguagem.

ConsideraessobreaplataformaJava

ParautilizarmosoJavafazsenecessrioainstalaodeduas
ferramentas::

JDKJavaDevelopmentKit

JREJavaRuntimeEnvironment

Resumo

Paracriarmosnossoexemplo,precisaremos:

1. BancodedadosMySQLServer
2. IDENetBeans.

Almdasferramentas,vamosenumerar10passos:

1. BancodeDados
2. OProjeto
3. Factory
4. Modelo
5. DAO
6. GUI
7. EventoSAIR
8. EventoLIMPAR
9. EventoCADASTRAR
10. ConsultaatravsdoconsoledoMySQLServer.

Monamassa:

Passo1:BancodeDados

AbraoconsoledoMySQLServeremIniciar>Todosos
programas>Mysql>MySQLServer5.5>MySQLServer
5.5CommandLineClientedigiteosseguintescomandos:

createdatabaseprojetojava;
useprojetojava;
CREATETABLEusuario(
idBIGINT(10)AUTO_INCREMENT,
nomeVARCHAR(255),
cpfVARCHAR(255),
emailVARCHAR(255),
telefoneVARCHAR(255),
PRIMARYKEY(id)
);

Ouseja,teremosatabelausuariocom5atributos(id,nome,CPF,
email,telefone).

Agora,vamosabriroNetBeansemIniciar>Todosos
programas>NetBeans>NetBeansIDE>NetBeansIDE
6.5.1ecomearapramonamassanodesenvolvimentoda
aplicao.

OBS.:durantetodoodesenvolvimentodaaplicaoseguiro
imagensparafacilitaroaprendizado.

Passo2:OProjeto

Arquivo>Novoprojeto
NaabaNovoprojeto,cliqueemJavaeemAplicativoJava.Cliqueem
prximo.

NaabaNovoaplicativoJava,emNomedoprojetodigiteMinhaAplicacao.
DesmarqueaopoCriarclasseprincipal.Cliqueemfinalizar.
Agoravamoscriarospacotesoupackages.Cliquecomobotodireitoem
Pacotesdecdigosfonteecomobotoesquerdodomouse
escolhaNovo>PacoteJava...

NaabaNovoPacoteJavadigite"factoryparaNomedopacote.
CliqueemFinalizar.
Repitaoprocessodecriaodepacote,criandoosseguintespacotes,
almdopacotefactory:modelo,dao,gui.Assimficaravisogeraldo
projeto(nocantoesquerdodoNetBeans):

Passo3:Factory:

FactorysignificafbricaeConnectionFactorysignificafbricade
conexes.FactoryseronomedopacoteeConnectionFactoryonome
daclassequefarainterfacecomodriverJDBCdeconexoaqualquer
bancoquedesejar.Porissoonomefbrica,poisoJDBCpermitea
conexoaqualquerbanco:MySQL,Postgree,Oracle,SQLServer,etc.,
somentealterandoalinhadomtodogetConnection.Vamoscomear
criandoaclasseConnectionFactorynopacotefactory.Vcomoboto
direitoatfactoryecliquecomobotoesquerdoemNovo>ClasseJava.

NaabaNovoClasseJavaemNomedaClasseescolhao
nomeConnectionFactory.CliqueemFinalizar.

OscriptabaixorepresentaaclassedeconexoConnectionFactory.Copie
ecolenaclasseConnectionFactory:

//situaemqualpackageoupacoteestaclasse
packagebr.com.projeto.factory;
//fazasimportaesdeclassesnecessriasparaofuncionamentodoprograma
importjava.sql.Connection;//conexoSQLparaJava
importjava.sql.DriverManager;//driverdeconexoSQLparaJava
importjava.sql.SQLException;//classeparatratamentodeexcees

publicclassConnectionFactory{
publicConnectiongetConnection(){
try{
returnDriverManager.getConnection("jdbc:mysql://localhost/projetojava","se
}
catch(SQLExceptionexcecao){
thrownewRuntimeException(excecao);
}
}
}

Salveaalterao(CTRL+S).

OBS.:noesqueadesalvartodasasalteraesnoscdigosaodecorrer
dotutorial.
OBS2:altere"seunomedeusuario"e"suasenha"paraasconfiguraes
doseuBancodeDados.

VamoscriarumaclasseparatestaraconectividadeaoMySQL.Podeser
dentrodopacotefactorymesmo...
ColoquemosonomeTestaConexao:
CliqueemFinalizar.

ScriptdaclasseTestaConexao:

packagefactory;
importjava.sql.Connection;
importjava.sql.SQLException;
publicclassTestaConexao{
publicstaticvoidmain(String[]args)throwsSQLException{
Connectionconnection=newConnectionFactory().getConnection();
System.out.println("Conexoaberta!");
connection.close();
}
}

ParaexecutarqualqueraplicativonoNetBeansteclamosSHIFT+F6.
Faao.Percebaqueumamensagemdeerroexibidanoconsole.Esta
mensagemdeerrosignificaausnciadodriverJDBC.Precisamosbaix
loparaassimfazermosaconexo.Endereopara
download:http://dev.mysql.com/downloads/mirror.php?
id=404191#mirrors

Seoarquivoviercompactado,descompacteoeescolhaodiretriodesua
preferncia.

DepoisdebaixarodriverJDBC,vem:Bibliotecas>Adicionar
JAR/pasta...

EscolhaodiretrioondeinstalouodriverJDBCecliqueemOpen.
Executeoprojeto.Agorasimfuncionou!

Seamensagemqueapareceunoconsolefoiparecidacom:

run:
Conexoaberta!
CONSTRUDOCOMSUCESSO(tempototal:1segundo)

entosuaconexofoiestabelecida!

OBS3:semesmoassimnofuncionar,especifiqueaportadoservidorao
ladodolocalhost.
Exemplo:localhost:3307

Passo4:Modelo:

Agora,criemosaclasseUsuario,dentrodopacotemodelo:modelo>
Novo>ClasseJava>Usuario>Finalizar.
Crieasvariveisid(Long),nome,CPF,email,telefone(todasstring)eos
mtodosgettersesetters.Assimficaroscriptdaclasse:

packagemodelo;
publicclassUsuario{
Longid;
Stringnome;
Stringcpf;
Stringemail;
Stringtelefone;

publicStringgetCpf(){
returncpf;
}

publicvoidsetCpf(Stringcpf){
this.cpf=cpf;
}

publicStringgetEmail(){
returnemail;
}

publicvoidsetEmail(Stringemail){
this.email=email;
}

publicLonggetId(){
returnid;
}

publicvoidsetId(Longid){
this.id=id;
}

publicStringgetNome(){
returnnome;
}

publicvoidsetNome(Stringnome){
this.nome=nome;
}

publicStringgetTelefone(){
returntelefone;
}

publicvoidsetTelefone(Stringtelefone){
this.telefone=telefone;
}
}

Passo5:DAO:

CrienopacoteDAOaclasseUsuarioDAO:dao>Novo>ClasseJava>
UsuarioDAO>Finalizar.
NestepacoteficamasclassesquesoresponsveispeloCRUD(Create,
Retrieve,Update,DeleteouCriar,Consultar,Alterar,Deletar),isto,
dadosdepersistncia.Masnonossocasonocriamosmaisqueuma
tabelanaBasedeDados,conseqentemente,nenhumrelacionamento.
Almdisso,nesteexemplo,criaremosoCadastrodeUsurio,isto,s
vamosusaroCreatedoCRUD.Numaprximaoportunidadepodemos
aprenderosoutrosmtodos(alterar,consultaredeletar).EmCreate,
criaremosomtodoadiciona.Passaremosoprprioobjeto"usuario"como
parmetrodafuno:

adiciona(Usuariousuario).

Usuariocomletramaiscularepresentaaclasseecomletraminscula
representaoObjeto.Comosvamosrepresentaromtodoadiciona,no
hnecessidadedeinseriravarivelid,poisamesmaautoincremento,
ouseja,nomomentodainsero,estecamposerpreenchido
automaticamentenatabelausuriodoBancodeDados.Seusssemoso
mtodoalteraouomtodoremove,asimprecisaramosdeclarara
varivelid.NaclasseUsuariodopacotemodelocriamosoidpoiso
modelodonegcioprecisaabrangerotodo,atmesmoparafuturas
consultas.
EisoscriptabaixodaclasseUsuarioDAO:

packagedao;

importfactory.ConnectionFactory;
importmodelo.Usuario;
importjava.sql.*;
importjava.sql.PreparedStatement;

publicclassUsuarioDAO{
privateConnectionconnection;
Longid;
Stringnome;
Stringcpf;
Stringemail;
Stringtelefone;

publicUsuarioDAO(){
this.connection=newConnectionFactory().getConnection();
}

publicvoidadiciona(Usuariousuario){

Stringsql="INSERTINTOusuario(nome,cpf,email,telefone)VALUES(?,?,?,?)";
try{

PreparedStatementstmt=connection.prepareStatement(sql);
stmt.setString(1,usuario.getNome());
stmt.setString(2,usuario.getCpf());
stmt.setString(3,usuario.getEmail());
stmt.setString(4,usuario.getTelefone());
stmt.execute();
stmt.close();

}catch(SQLExceptionu){
thrownewRuntimeException(u);
}
}
}

Passo6:GUI(GraphicalUserInterfaceouInterfaceGrficade
Usurio)

Nossaaplicaobackendesttodafinalizada.Precisamosaprontaro
frontend,isto,ainterfacedeusurio,aclassequeserresponsvel
pelainteraocomousurio,ouseja,oformulriodeentrada.Vamoscriar
oformulrioqueserpreenchidopelousurio:gui>Novo>Formulario
JFrame>UsuarioGUI>Finalizar.Aseguintetelaaparecer:
Paracriarmososelementosdoformulrionecessrio
oarrastaresoltardomouse.Aesseprocesso,voucriara
siglaASMparafacilitarnossoentendimento.Arrastaseoscomponentes
SWINGparaoformulrio.Portanto,quandoeuchamaronomedo
componenteecolocaraoladoasiglaASM,subentendesequepara
arrastarcomponentesdapaletaesoltlosnoFormulrio.

direita,napaletadecomponentes,emControlesSwing,clique
emRtuloASM.
EscrevaCadastrodeUsurio.Comobotodireitodomouseemcimado
rtulocliqueemPropriedadeseem"font"escolhatamanho18eclique
emOK.Veja:
Agoranapaletadecomponentes,emContinersSWING,
escolhaPainelASM.Cliquecomobotodireitodomousee
escolhaPropriedades.Cliqueemborder>Bordadettulo.Intitule
Cadastrarnovousurio.CliqueemOKedepoisfechar.Veja:

Escrevamais4rtulosdentrodopainel:Nome,CPF,Email,Telefone.

Agoraescolhanapaletadecomponentes4camposde
textosrepresentandodeformarespectivacadaumdosrtulos
mencionados.Veja:
Finalmentevamoscriarosbotes.NaabaPaleta>ControlesSWING,v
atBotoASM.Criedoisbotes,conformemostraaimagemabaixo:

EscrevajButton1comoCadastrarejButton2comoLimpar.Veja:
Agora,foradopainel,crieobotoSAIR.Faaomesmoprocesso:
sobrescrevajButton3paraSAIR.

ClicandoemALT+F6temosumavisogeraldoprojetoemexecuo:
Passo7:EventoSAIR

CliqueduasvezesnobotoSAIRparacriarmosoevento.Naaba
CdigoFonte,nomtodoreferenteajButton3,isto,aobotoSAIR,
digite:

System.exit(0);

Estecomandofechaajanelaemexecuo.DumALT+F6eagoraclique
nobotoSAIR.Ajanelaserfechada.

Passo8:EventoLIMPAR

Agora,naabaProjeto,ddoiscliquesemLimpar.
NomtodojButton2ActionPerformed,naabaCdigofonte,escrevaos
seguintesscripts:

jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
jTextField4.setText("");

Estesscriptssoresponsveisporlimparouapagarqualquerstring
escritapelousurioemcadaumdos4camposdetextodoformulrio.

Passo9:EventoCADASTRAR

Precisamoscriaroprincipaleventoqueliteralmentecadastrarousurio.
Paraisso,vamosclicarduasvezesnobotoCadastrare,naaba
Cdigofonte,noeventojButton1ActionPerformedficarassimocdigo:

//instanciandoaclasseUsuariodopacotemodeloecriandoseuobjetousuarios
Usuariousuarios=newUsuario();
usuarios.setNome(jTextField1.getText());
usuarios.setCpf(jTextField2.getText());
usuarios.setEmail(jTextField3.getText());
usuarios.setTelefone(jTextField4.getText());

//fazendoavalidaodosdados
if((jTextField1.getText().isEmpty())||(jTextField2.getText().isEmpty())||(jTextFie
JOptionPane.showMessageDialog(null,"Oscamposnopodemretornarvazios");
}
else{

//instanciandoaclasseUsuarioDAOdopacotedaoecriandoseuobjetodao
UsuarioDAOdao=newUsuarioDAO();
dao.adiciona(usuarios);
JOptionPane.showMessageDialog(null,"Usurio"+jTextField1.getText()+"inseridocom
}

//apagaosdadospreenchidosnoscamposdetexto
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
jTextField4.setText("");

Certamentealgumasmensagensdeerroaparecero.Istoporquetemos
queimportarnoinciodocdigoasclassesUsuario(pacotemodelo)
eUsuarioDAO(pacotedao).Almdestas,precisamosimportaraclasse
JOptionPane,responsvelpelasjanelasdevalidao,aquelasque
aparecemdizendoseousuriofoiounocadastrado,seoscampos
estovazios,etc.

Coloqueestaslinhasnoinciodocdigo,abaixodepackagegui,naaba
Cdigofonte:

importmodelo.Usuario;
importdao.UsuarioDAO;
importjavax.swing.JOptionPane;

Agorasimnoaparecererronenhumeocadastropoderserfeito.
Faaumteste!Veja:

Passo10:ConsultaatravsdoConsoledoMySQLServer

VatoconsoledoMySQLServer.
Digite:

useprojetojava;
select*fromusuario;

Aseguintetelaaparecer:
Pronto.Setodosospassosforamseguidoscorretamente,suaaplicao
foiexecutadacomsucesso.OJavanoumatecnologiafcildese
aprenderlogodeincio,masdepoisquevocentendeosprincipais
conceitosdeorientaoaobjetos(classes,objetos,atributos,mtodos,
encapsulamento,heranaepolimorfismo,etc.),prticadocdigolimpo
(essequesvemcomotempoutilizandopolimorfismoparasubstituir
estruturasdedeciso,encapsulamentonosatributos,interfacespara
reduziroacoplamento,eassimpordiante...),asimoentendimentofica
bemmaiselucidado.

Esperomesmoqueesteartigopossaajudarseusprojetosnaempresa
quevoctrabalha,nasuafaculdadeoumesmonosseusestudos.

Umabraoatodos,bonsestudos

eataprxima!