Академический Документы
Профессиональный Документы
Культура Документы
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!