Sie sind auf Seite 1von 97

1/97

PGBR2013

Desenvolvendo Otimizado com PostgreSQL e Programao Orientada a O !etos

Pa lo "iletti #oreira $a lo%&iletti'gmail%com

2/97

(genda

Bai)a $er&ormance%%% OR# * #a$eamento O !eto+Relacional ,P( * ,ava Persistence (P.i ernate "etc/ing * 0ager "etc/ing * Laz1 2ollection "etc/ing * Laz1 2ollection "etc/ing * 0ager 2ac/e do 13 45vel 2ac/e do 23 45vel D1namic6$date Q7er1 com 408 Batc/ 6$date Batc/ 9 Bin:rios Q7er1 com "0;2. Batc/Size

3/97

Bai)a $er&ormance%%%

Para "ernando -<e de Oliveira


=0> Pro 20> Pro 10> Pro 10> Pro lemas so relacionados ao ma7 7so de e)$ress?es SQL% lemas so relacionados a m: modelagem do BD@s% lemas so relacionados a m: con&ig7rao do SGDB% lemas so relacionados a m: con&ig7rao do SO%

AOL-B0-R(C/tt$D++EEE%midstorm%org+F&i<e+$alestras+t7ningG$gGconsegi%$d&H

4/97

Bai)a $er&ormance%%%
Para ": io ;elles Rodrig7ez
Por mais I7e os desenvolvedores reclamem do servidor de anco de dadosC em J0> dos casos o $ro lema est: na a$licao e em 20> no SGDB% 4o I7e a a$licao se!a r7im em siC mas ela $ode no 7sar o SGDB de &orma e&iciente% 0)istem v:rias &ormas de se o ter os mesmos dados de &orma ine&iciente% PiorC 7ma cons7lta I7e &7ncionava em n7m SGDB $ode ter 7ma $er&ormance catastrK&ica em o7tro SGDB% -n&elizmente isto $ode ocorrer tam Lm com migra?es $ara o7tra verso do mesmo SGDB% #esmo assimC a c7l$a ainda no L do SGDB% ( a$licao I7e tem Ain&elizmenteH de ada$tar Ms es$eci&icidades de cada &ornecedor e cada verso% 4a verdadeC se &ormos levar a I7esto de &orma mais $onderadaC a lei no seria J0+20C seria NNCN+0C01 % -sto ocorre $or 7m motivo sim$lesC a!7stes de SQL e modelagem $odem res7ltar em gan/os de $er&ormance da ordem de 10C 100 o7 atL 1000 vezes% 0nI7anto issoC a!7stes no SO e SGDB tem gan/os da ordem de atL 10 vezes% PortantoC antes de mais nada a$renda a modelar em e con/ea as minOcias do SQL do se7 SGDB% De$ois a$renda a analisar com $ro&7ndidade os $lanos de e)ec7o e reescreva cons7ltas com$le)as a $artir deste ti$o de an:lise% ARODR-G60SC /tt$D++EEE%midstorm%org+Ftelles+200J+03+0P+12QdicasQ$araQa$renderQaQ a!7starQaQ$er&ormanceQdeQ ancosQdeQdados+H

5/97

Bai)a $er&ormance%%%
Para Renia #ilene
=S> das ca7sas de ai)a $er&ormance em Bancos de Dados so ca7sadas $elas a$lica?es% Di&icilmente temos no mesmo am iente 7m DB( Desenvolvedor o7 7m Desenvolvedor DB(C sendo assimC m7ito C mas m7ito c7idado na criao das cons7ltas% 2S> so ca7sados $elos modelos de dados% Banco mal modelado tende a ser terr5vel% ( mel/or &orma L normalizar o modeloC com isso gan/amos economia de es$ao e a no re$etio dos dados% PorLm L necess:rio 7ma an:liseC $ois em relatKrios m7ito grandes no L aconsel/:vel normalizao I7ando &alamos de gan/o de $er&ormance% S> so $ro lemas do SGDBC acontece do gerenciador do anco no ter 7m algoritmo e&icienteC o7 no conseg7e manter as in&orma?es necess:rias na memKria $or tem$o e&iciente% (teno na a$licao de $atc/s e 7$grades de vers?es% S> so ca7sadas $or con&ig7ra?es o7 de&iciTncias do Sistema O$eracional% (teno no &l7)o da redeC m7itas vezes o servidor esta com 7ma $laca de rede no adeI7ada $ara a I7antidade de &l7)o de in&orma?es I7e tra&ega% Beri&ica?es de $arUmetros de Rernel tam Lm so consider:veisC $ois o S%O $ode no estar dei)ando o anco escalonar I7e in&l7encia no im$acto do sistema% A#-L040C /tt$D++<eniamilene%Eord$ress%com+200V+10+2S+regrasQ asicasQdeQt7ningQdeQ ancoQdeQdados+H%

6/97

Bai)a $er&ormance%%%
Para 2la7dia #ac/ado Sistema o$eracionalC caso ten/a sido mal $arametrizadoW SGBD RelacionalC $or ca7sa de inadeI7adas con&ig7ra?es relacionadas Ms :reas de 7&&ersC organizao do loggingC alocao de arI7ivosC entre o7trosW RedeC no caso de im$actos no tr:&ego em razo de $rocessamento de dados e&et7ados no servidor o7 na redeW #odelo &5sico de dadosC em razo de inadeI7ao na de&inio da estr7t7ra das ta elas e 5ndicesW ($licaoC I7ando ocorrem $ro lemas na estr7t7ra lKgica e&et7ada $elo $rogramadorC o I7e com$reende a ling7agem /os$edeira e os comandos em SQL%

A#(2.(DOC/tt$D++lin/aseletrasEe % logs$ot%com+2010+03+t7ningQdeQ ancosQdeQ dados%/tmlH

7/97

( c7l$a L de I7emXXX

Desenvolvedores Y0ste Banco L 7ma carroaZ

DBAs Y0sta a$licao L c/eia de gam iarrasZ

8/97

OR# * #a$eamento O !eto+Relacional


Por m7itos anosC $ersistTncia tem sido 7m tK$ico I7ente de de ates na com7nidade ,ava% #7itos desenvolvedores nem mesmo concordam com o esco$o do $ro lema% Ser: a $ersistTncia 7m $ro lema I7e !: &oi resolvido $ela tecnologia relacional e s7as e)tens?es como $rocedimentos armazenados Astored $roced7resHC o7 ele L 7m $ro lema mais am$lo I7e $recisa ser endereado $or modelos de com$onentes ,ava es$eciaisC como os entit1 eans Acom$onentes de entidadeH do 0,BX Devemos escrever M mo atL mesmo as mais $rimitivas o$era?es 2R6D AcriarC lerC at7alizarC deletar * createC readC 7$dateC deleteH em SQL e ,DB2C o7 esse tra al/o deve ser a7tomatizadoX 2omo alcanamos $orta ilidade se todo sistema de gerenciamento de anco de dados $oss7i o se7 $rK$rio dialeto SQLX Devemos a andonar o SQL em de&initivo e adotar 7ma tecnologia di&erente de anco de dadosC como o sistema de anco de dados orientado $ara o !etosX O de ate contin7aC mas agora a sol7o c/amada ma$eamento o !eto+relacional AOR# * o !ect+relational ma$$ingH tem 7ma grande aceitao% AB(60R e R-4GC 200VC $%PH

9/97

,P( * ,ava Persistence (P-

0s$eci&icao Providers .i ernate 0cli$seLin< O$en,P( ;o$Lin<

10/97

.i ernate
O .i ernate L 7m $ro!eto am icioso I7e visa ser 7ma sol7o com$leta $ara o $ro lema de gerenciar dados $ersistentes em ,ava% 0le medeia a interao da a$licao com o anco de dados relacionalC dei)ando o desenvolvedor livre $ara se concentrar no $ro lema de negKcio I7e tem nas mos% O .i ernate L 7ma sol7o no intr7siva% 4o L necess:rio I7e vocT siga m7itas das regras e dos $adr?es de $ro!eto es$ec5&icos do .i ernate I7anto estiver escrevendo a s7a lKgica de negKcio e s7as classes $ersistentesW L $or essa razo I7e o .i ernate se integra tranI7ilamente M maioria das novas e e)istentes a$lica?es e no necessita de m7danas inc[modas ao resto da a$licao% AB(60R e R-4GC 200VC $%PH

11/97

.i ernate

Prod7tivade #7lti anco Sem SQL 2riteria \ ,PQL A.QLH 2ac/e 0nvers * (7ditoria .i ernate Statistics

12/97

"etc/ing * 2lasse Prod7to

13/97

"etc/ing * 0ager

14/97

"etc/ing * 0ager
select select $rod7to0G%id $rod7to0G%idas asid1G2GC id1G2GC $rod7to0G%descricao $rod7to0G%descricaoas asdescricao1G2GC descricao1G2GC $rod7to0G%&a ricanteGid as $rod7to0G%&a ricanteGid as&a &a ricanteSG1G2GC ricanteSG1G2GC $rod7to0G%nome $rod7to0G%nomeas asnome1G2GC nome1G2GC $rod7to0G%ti$oGid $rod7to0G%ti$oGidas asti$o=G1G2GC ti$o=G1G2GC $rod7to0G%valor as valor1G2GC $rod7to0G%valor as valor1G2GC &a &a ricante1G%id ricante1G%idas asid0G0GC id0G0GC &a ricante1G%nome as &a ricante1G%nome asnome0G0GC nome0G0GC ti$o$rod7t2G%id ti$o$rod7t2G%idas asid2G1GC id2G1GC ti$o$rod7t2G%descricao ti$o$rod7t2G%descricaoas asdescricao2G1G descricao2G1G &rom &rom $7 $7 lic%$rod7to lic%$rod7to$rod7to0G $rod7to0G inner !oin inner !oin $7 $7 lic%&a lic%&a ricante ricante&a &a ricante1G ricante1G on on$rod7to0G%&a $rod7to0G%&a ricanteGid]&a ricanteGid]&a ricante1G%id ricante1G%id inner !oin inner !oin $7 $7 lic%ti$oG$rod7to lic%ti$oG$rod7toti$o$rod7t2G ti$o$rod7t2G on $rod7to0G%ti$oGid]ti$o$rod7t2G%id on $rod7to0G%ti$oGid]ti$o$rod7t2G%id E/ere E/ere $rod7to0G%id]X $rod7to0G%id]X

15/97

"etc/ing * #a$eamento Laz1

16/97

"etc/ing * Laz1

17/97

"etc/ing * Laz1

select select $rod7to&et0G%id $rod7to&et0G%idas asid1G0GC id1G0GC $rod7to&et0G%descricao $rod7to&et0G%descricaoas asdescricao1G0GC descricao1G0GC $rod7to&et0G%&a ricanteGid as $rod7to&et0G%&a ricanteGid as&a &a ricanteSG1G0GC ricanteSG1G0GC $rod7to&et0G%nome as nome1G0GC $rod7to&et0G%nome as nome1G0GC $rod7to&et0G%ti$oGid $rod7to&et0G%ti$oGidas asti$o=G1G0GC ti$o=G1G0GC $rod7to&et0G%valor as valor1G0G $rod7to&et0G%valor as valor1G0G &rom &rom $7 $7 lic%$rod7to lic%$rod7to$rod7to&et0G $rod7to&et0G E/ere E/ere $rod7to&et0G%id]X $rod7to&et0G%id]X

18/97

"etc/ing * Laz1
select select &a &a ricante0G%id ricante0G%idas asid0G0GC id0G0GC &a ricante0G%nome &a ricante0G%nomeas asnome0G0G nome0G0G &rom &rom $7 $7 lic%&a lic%&a ricante ricante&a &a ricante0G ricante0G E/ere E/ere &a &a ricante0G%id]X ricante0G%id]X

19/97

"etc/ing * Laz1

select select ti$o$rod7t0G%id ti$o$rod7t0G%idas asid2G0GC id2G0GC ti$o$rod7t0G%descricao ti$o$rod7t0G%descricaoas asdescricao2G0G descricao2G0G &rom &rom $7 $7 lic%ti$oG$rod7to lic%ti$oG$rod7toti$o$rod7t0G ti$o$rod7t0G E/ere E/ere ti$o$rod7t0G%id]X ti$o$rod7t0G%id]X

20/97

2ollection "etc/ing * 2lasse "a ricante

21/97

2ollection "etc/ing * Laz1


select select &a &a ricante0G%id ricante0G%idas asid0G0GC id0G0GC &a ricante0G%nome &a ricante0G%nomeas asnome0G0G nome0G0G &rom &rom $7 $7 lic%&a lic%&a ricante ricante&a &a ricante0G ricante0G E/ere E/ere &a &a ricante0G%id]X ricante0G%id]X

22/97

2ollection "etc/ing * Laz1


select select $rod7tos0G%&a $rod7tos0G%&a ricanteGid ricanteGidas as&a &a ricanteSG0G2GC ricanteSG0G2GC $rod7tos0G%id as id2GC $rod7tos0G%id as id2GC $rod7tos0G%id $rod7tos0G%idas asid1G1GC id1G1GC $rod7tos0G%descricao $rod7tos0G%descricaoas asdescricao1G1GC descricao1G1GC $rod7tos0G%&a ricanteGid as $rod7tos0G%&a ricanteGid as&a &a ricanteSG1G1GC ricanteSG1G1GC $rod7tos0G%nome as nome1G1GC $rod7tos0G%nome as nome1G1GC $rod7tos0G%ti$oGid $rod7tos0G%ti$oGidas asti$o=G1G1GC ti$o=G1G1GC $rod7tos0G%valor as valor1G1GC $rod7tos0G%valor as valor1G1GC ti$o$rod7t1G%id ti$o$rod7t1G%idas asid2G0GC id2G0GC ti$o$rod7t1G%descricao ti$o$rod7t1G%descricaoas asdescricao2G0G descricao2G0G &rom &rom $7 $7 lic%$rod7to lic%$rod7to$rod7tos0G $rod7tos0G inner !oin inner !oin $7 $7 lic%ti$oG$rod7to lic%ti$oG$rod7toti$o$rod7t1G ti$o$rod7t1G on $rod7tos0G%ti$oGid]ti$o$rod7t1G%id on $rod7tos0G%ti$oGid]ti$o$rod7t1G%id E/ere E/ere $rod7tos0G%&a $rod7tos0G%&a ricanteGid]X ricanteGid]X

23/97

2ollection "etc/ing * #a$eamento 0ager

24/97

2ollection "etc/ing * 0ager

25/97

2ollection "etc/ing * 0ager

.i .i ernateD ernateD select select &a &a ricante0G%id ricante0G%idas asid0G2GC id0G2GC &a &a ricante0G%nome ricante0G%nomeas asnome0G2GC nome0G2GC $rod7tos1G%&a ricanteGid $rod7tos1G%&a ricanteGidas as&a &a ricanteSG0GPGC ricanteSG0GPGC $rod7tos1G%id $rod7tos1G%idas asidPGC idPGC $rod7tos1G%id $rod7tos1G%idas asid1G0GC id1G0GC $rod7tos1G%descricao $rod7tos1G%descricaoas asdescricao1G0GC descricao1G0GC $rod7tos1G%&a $rod7tos1G%&a ricanteGid ricanteGidas as&a &a ricanteSG1G0GC ricanteSG1G0GC $rod7tos1G%nome as nome1G0GC $rod7tos1G%nome as nome1G0GC $rod7tos1G%ti$oGid $rod7tos1G%ti$oGidas asti$o=G1G0GC ti$o=G1G0GC $rod7tos1G%valor $rod7tos1G%valoras asvalor1G0GC valor1G0GC ti$o$rod7t2G%id ti$o$rod7t2G%idas asid2G1GC id2G1GC ti$o$rod7t2G%descricao ti$o$rod7t2G%descricaoas asdescricao2G1G descricao2G1G &rom &rom $7 $7 lic%&a lic%&a ricante ricante&a &a ricante0G ricante0G le&t le&to7ter o7ter!oin !oin $7 $7 lic%$rod7to lic%$rod7to$rod7tos1G $rod7tos1G on &a ricante0G%id]$rod7tos1G%&a on &a ricante0G%id]$rod7tos1G%&a ricanteGid ricanteGid le&t le&to7ter o7ter!oin !oin $7 $7 lic%ti$oG$rod7to lic%ti$oG$rod7toti$o$rod7t2G ti$o$rod7t2G on on$rod7tos1G%ti$oGid]ti$o$rod7t2G%id $rod7tos1G%ti$oGid]ti$o$rod7t2G%id E/ere E/ere &a &a ricante0G%id]X ricante0G%id]X

26/97

2ac/e de 13 45vel * 13 0)em$lo

2ac/e de 13 45vel * 13 0)em$lo

27/97 select select $rod7to0G%id $rod7to0G%idas asid1G2GC id1G2GC $rod7to0G%descricao $rod7to0G%descricaoas asdescricao1G2GC descricao1G2GC $rod7to0G%&a $rod7to0G%&a ricanteGid ricanteGidas as&a &a ricanteSG1G2GC ricanteSG1G2GC $rod7to0G%nome as nome1G2GC $rod7to0G%nome as nome1G2GC $rod7to0G%ti$oGid $rod7to0G%ti$oGidas asti$o=G1G2GC ti$o=G1G2GC $rod7to0G%valor $rod7to0G%valoras asvalor1G2GC valor1G2GC &a &a ricante1G%id ricante1G%idas asid0G0GC id0G0GC &a ricante1G%nome as &a ricante1G%nome asnome0G0GC nome0G0GC ti$o$rod7t2G%id ti$o$rod7t2G%idas asid2G1GC id2G1GC ti$o$rod7t2G%descricao ti$o$rod7t2G%descricaoas asdescricao2G1G descricao2G1G &rom &rom $7 $7 lic%$rod7to lic%$rod7to$rod7to0G $rod7to0G inner !oin inner !oin $7 $7 lic%&a lic%&a ricante ricante&a &a ricante1G ricante1G on $rod7to0G%&a ricanteGid]&a on $rod7to0G%&a ricanteGid]&a ricante1G%id ricante1G%id inner !oin inner !oin $7 $7 lic%ti$oG$rod7to lic%ti$oG$rod7toti$o$rod7t2G ti$o$rod7t2G on $rod7to0G%ti$oGid]ti$o$rod7t2G%id on $rod7to0G%ti$oGid]ti$o$rod7t2G%id E/ere E/ere $rod7to0G%id]X $rod7to0G%id]X

28/97

2ac/e de 13 45vel * 13 0)em$lo

4o 4o&az &azcons7lta cons7ltano noBD% BD% ( 0ntidade esta no 2ac/e de ( 0ntidade esta no 2ac/e de13 1345vel 45vel

29/97

2ac/e de 13 45vel * 13 0)em$lo

.as/2ode .as/2ode$ri% $ri%$rod7toD $rod7toD12=2J3V020 12=2J3V020

30/97

2ac/e de 13 45vel * 13 0)em$lo

.as/2ode .as/2odeseg% seg%$rod7toD $rod7toD12=2J3V020 12=2J3V020

31/97

2ac/e de 13 45vel * 13 0)em$lo

Res7ltado Res7ltadoda dacom$arao com$araoeI7alsD eI7alsDtr7e tr7e

32/97

2ac/e de 13 45vel * 13 0)em$lo

Res7ltado Res7ltadoda dacom$arao com$araoeI7alsD eI7alsDtr7e tr7e

33/97

2ac/e de 13 45vel * 23 0)em$lo

34/97

2ac/e de 13 45vel * 23 0)em$lo

select select $rod7to0G%id $rod7to0G%idas asid1G2GC id1G2GC $rod7to0G%descricao $rod7to0G%descricaoas asdescricao1G2GC descricao1G2GC $rod7to0G%&a ricanteGid as $rod7to0G%&a ricanteGid as&a &a ricanteSG1G2GC ricanteSG1G2GC $rod7to0G%nome as nome1G2GC $rod7to0G%nome as nome1G2GC $rod7to0G%ti$oGid $rod7to0G%ti$oGidas asti$o=G1G2GC ti$o=G1G2GC $rod7to0G%valor as valor1G2GC $rod7to0G%valor as valor1G2GC &a &a ricante1G%id ricante1G%idas asid0G0GC id0G0GC &a ricante1G%nome as &a ricante1G%nome asnome0G0GC nome0G0GC ti$o$rod7t2G%id as id2G1GC ti$o$rod7t2G%id as id2G1GC ti$o$rod7t2G%descricao ti$o$rod7t2G%descricaoas asdescricao2G1G descricao2G1G &rom &rom $7 $7 lic%$rod7to lic%$rod7to$rod7to0G $rod7to0G inner inner!oin !oin $7 $7 lic%&a lic%&a ricante ricante&a &a ricante1G ricante1G on on$rod7to0G%&a $rod7to0G%&a ricanteGid]&a ricanteGid]&a ricante1G%id ricante1G%id inner !oin inner !oin $7 $7 lic%ti$oG$rod7to lic%ti$oG$rod7toti$o$rod7t2G ti$o$rod7t2G on on$rod7to0G%ti$oGid]ti$o$rod7t2G%id $rod7to0G%ti$oGid]ti$o$rod7t2G%id E/ere E/ere $rod7to0G%id]X $rod7to0G%id]X

35/97

2ac/e de 13 45vel * 23 0)em$lo


select select $rod7to0G%id $rod7to0G%idas asid1G2GC id1G2GC $rod7to0G%descricao $rod7to0G%descricaoas asdescricao1G2GC descricao1G2GC $rod7to0G%&a ricanteGid as $rod7to0G%&a ricanteGid as&a &a ricanteSG1G2GC ricanteSG1G2GC $rod7to0G%nome as nome1G2GC $rod7to0G%nome as nome1G2GC $rod7to0G%ti$oGid $rod7to0G%ti$oGidas asti$o=G1G2GC ti$o=G1G2GC $rod7to0G%valor as valor1G2GC $rod7to0G%valor as valor1G2GC &a &a ricante1G%id ricante1G%idas asid0G0GC id0G0GC &a &a ricante1G%nome ricante1G%nomeas asnome0G0GC nome0G0GC ti$o$rod7t2G%id as id2G1GC ti$o$rod7t2G%id as id2G1GC ti$o$rod7t2G%descricao ti$o$rod7t2G%descricaoas asdescricao2G1G descricao2G1G &rom &rom $7 $7 lic%$rod7to lic%$rod7to$rod7to0G $rod7to0G inner inner!oin !oin $7 $7 lic%&a lic%&a ricante ricante&a &a ricante1G ricante1G on $rod7to0G%&a ricanteGid]&a on $rod7to0G%&a ricanteGid]&a ricante1G%id ricante1G%id inner inner!oin !oin $7 $7 lic%ti$oG$rod7to lic%ti$oG$rod7toti$o$rod7t2G ti$o$rod7t2G on on$rod7to0G%ti$oGid]ti$o$rod7t2G%id $rod7to0G%ti$oGid]ti$o$rod7t2G%id E/ere E/ere $rod7to0G%id]X $rod7to0G%id]X

36/97

2ac/e de 13 45vel * 23 0)em$lo

.as/2ode .as/2ode$ri% $ri%7s7:rioD 7s7:rioD1S201SN10J 1S201SN10J

37/97

2ac/e de 13 45vel * 23 0)em$lo

.as/2ode .as/2odeseg% seg%7s7:rioD 7s7:rioD11PV3J01P2 11PV3J01P2

38/97

2ac/e de 13 45vel * 23 0)em$lo

Res7ltado Res7ltadoda dacom$arao com$araoeI7alsD eI7alsD&alse &alse

39/97

2ac/e de 23 45vel

Providers 0/2ac/e OS2ac/e ;erracotta -n&inis$an

40/97

2ac/e de 23 45vel * Persistence%)ml

41/97

2ac/e de 23 45vel * #a$eamento 2ac/e

42/97

2ac/e de 23 45vel * 0stratLgias


READ_ONLY Q 0sta L a estratLgia mais restritivaC indicada $ara entidades I7e so a$enas lidas e n7nca modi&icadas $ela a$licao%

READ_WRITE Q ( estratLgia leit7ra e escrita L a mais a rangente e s7$orta escrita mais &reI7enteC garantido I7e a Oltima verso do cac/e L a mesma do anco%

NONSTRICT_READ_WRITE Q -ndicada $ara o !etos I7e so raramente at7alizados e I7e tTm $ro a ilidade de at7aliza?es sim7ltUneas m7ito ai)as e L a mais com7m% 2aso m7itas at7aliza?es ocorram ^sim7ltaneamente^ $ode ser I7e a Oltima verso comitada no anco no se!a a mesma I7e aca o7 &icando no se7 cac/e%

TRANSACTIONAL Q _ totalmente transacionalC com s7$orte a cac/es distri 75dos% Po7cos $roviders o&erecem esse s7$orte% O $rovider 0/2ac/e no tem s7$orte a esta estratLgia%

43/97

2ac/e de 23 45vel * 13 0)em$lo

44/97

2ac/e de 23 45vel * 13 0)em$lo


select select ti$o$rod7t0G%id ti$o$rod7t0G%idas asid2G0GC id2G0GC ti$o$rod7t0G%descricao ti$o$rod7t0G%descricaoas asdescricao2G0G descricao2G0G &rom &rom $7 $7 lic%ti$oG$rod7to lic%ti$oG$rod7toti$o$rod7t0G ti$o$rod7t0G E/ere E/ere ti$o$rod7t0G%id]X ti$o$rod7t0G%id]X

45/97

2ac/e de 23 45vel * 13 0)em$lo

4o 4o&az &azcons7lta cons7ltano noBD% BD% ( 0ntidade esta no 2ac/e de ( 0ntidade esta no 2ac/e de23 2345vel 45vel

46/97

2ac/e de 23 45vel * 13 0)em$lo

.as/2ode .as/2ode$ri% $ri%ti$o ti$ode de$rod7toD $rod7toDPJ0PV=2== PJ0PV=2==

47/97

2ac/e de 23 45vel * 13 0)em$lo

.as/2ode .as/2odeseg% seg%ti$o ti$ode de$rod7toD $rod7toD11P211=V02 11P211=V02

48/97

2ac/e de 23 45vel * 13 0)em$lo

Res7ltado Res7ltadoda dacom$arao com$araoeI7alsD eI7alsD&alse &alse

49/97

2ac/e de 23 45vel * 23 0)em$lo

50/97

2ac/e de 23 45vel * 23 0)em$lo


select select ti$o$rod7t0G%id ti$o$rod7t0G%idas asid2GC id2GC ti$o$rod7t0G%descricao ti$o$rod7t0G%descricaoas asdescricao2G descricao2G &rom &rom $7 $7 lic%ti$oG$rod7to lic%ti$oG$rod7toti$o$rod7t0G ti$o$rod7t0G

51/97

2ac/e de 23 45vel * 23 0)em$lo

4o 4o&az &azcons7lta cons7ltano noBD% BD% ( 0ntidade esta no 2ac/e de ( 0ntidade esta no 2ac/e de23 2345vel 45vel

52/97

2ac/e de 23 45vel * 23 0)em$lo

4o 4o&az &azcons7lta cons7ltano noBD% BD% ( 0ntidade esta no 2ac/e de ( 0ntidade esta no 2ac/e de23 2345vel 45vel

53/97

D1namic6$date * 13 0)em$lo

54/97

D1namic6$date * 13 0)em$lo

select select $rod7to0G%id $rod7to0G%idas asid1G2GC id1G2GC $rod7to0G%descricao $rod7to0G%descricaoas asdescricao1G2GC descricao1G2GC $rod7to0G%&a ricanteGid as $rod7to0G%&a ricanteGid as&a &a ricanteSG1G2GC ricanteSG1G2GC $rod7to0G%nome $rod7to0G%nomeas asnome1G2GC nome1G2GC $rod7to0G%ti$oGid $rod7to0G%ti$oGidas asti$o=G1G2GC ti$o=G1G2GC $rod7to0G%valor as valor1G2GC $rod7to0G%valor as valor1G2GC &a &a ricante1G%id ricante1G%idas asid0G0GC id0G0GC &a ricante1G%nome as &a ricante1G%nome asnome0G0GC nome0G0GC ti$o$rod7t2G%id as id2G1GC ti$o$rod7t2G%id as id2G1GC ti$o$rod7t2G%descricao ti$o$rod7t2G%descricaoas asdescricao2G1G descricao2G1G &rom &rom $7 $7 lic%$rod7to lic%$rod7to$rod7to0G $rod7to0G inner !oin inner !oin $7 $7 lic%&a lic%&a ricante ricante&a &a ricante1G ricante1G on on$rod7to0G%&a $rod7to0G%&a ricanteGid]&a ricanteGid]&a ricante1G%id ricante1G%id inner !oin inner !oin $7 $7 lic%ti$oG$rod7to lic%ti$oG$rod7toti$o$rod7t2G ti$o$rod7t2G on on$rod7to0G%ti$oGid]ti$o$rod7t2G%id $rod7to0G%ti$oGid]ti$o$rod7t2G%id E/ere E/ere $rod7to0G%id]X $rod7to0G%id]X

55/97

D1namic6$date * 13 0)em$lo

7$date 7$date $7 $7 lic%$rod7to lic%$rod7to set set descricao]XC descricao]XC &a &a ricanteGid]XC ricanteGid]XC nome]XC nome]XC ti$oGid]XC ti$oGid]XC valor]X valor]X E/ere E/ere id]X id]X

56/97

D1namic6$date * #a$eamento

57/97

D1namic6$date * 23 0)em$lo

58/97

D1namic6$date * 23 0)em$lo

select select $rod7to0G%id $rod7to0G%idas asid1G2GC id1G2GC $rod7to0G%descricao $rod7to0G%descricaoas asdescricao1G2GC descricao1G2GC $rod7to0G%&a ricanteGid as $rod7to0G%&a ricanteGid as&a &a ricanteSG1G2GC ricanteSG1G2GC $rod7to0G%nome $rod7to0G%nomeas asnome1G2GC nome1G2GC $rod7to0G%ti$oGid $rod7to0G%ti$oGidas asti$o=G1G2GC ti$o=G1G2GC $rod7to0G%valor as valor1G2GC $rod7to0G%valor as valor1G2GC &a &a ricante1G%id ricante1G%idas asid0G0GC id0G0GC &a ricante1G%nome as &a ricante1G%nome asnome0G0GC nome0G0GC ti$o$rod7t2G%id as id2G1GC ti$o$rod7t2G%id as id2G1GC ti$o$rod7t2G%descricao ti$o$rod7t2G%descricaoas asdescricao2G1G descricao2G1G &rom &rom $7 $7 lic%$rod7to lic%$rod7to$rod7to0G $rod7to0G inner !oin inner !oin $7 $7 lic%&a lic%&a ricante ricante&a &a ricante1G ricante1G on on$rod7to0G%&a $rod7to0G%&a ricanteGid]&a ricanteGid]&a ricante1G%id ricante1G%id inner !oin inner !oin $7 $7 lic%ti$oG$rod7to lic%ti$oG$rod7toti$o$rod7t2G ti$o$rod7t2G on on$rod7to0G%ti$oGid]ti$o$rod7t2G%id $rod7to0G%ti$oGid]ti$o$rod7t2G%id E/ere E/ere $rod7to0G%id]X $rod7to0G%id]X

59/97

D1namic6$date * 23 0)em$lo

7$date 7$date $7 $7 lic%$rod7to lic%$rod7to set set nome]X nome]X E/ere E/ere id]X id]X

60/97

Q7er1 com 408 * 13 0)em$lo

61/97

Q7er1 com 408 * 13 0)em$lo

62/97

Q7er1 com 408 * 13 0)em$lo


select select $rod7to0G%id $rod7to0G%idas asid1GC id1GC $rod7to0G%descricao $rod7to0G%descricaoas asdescricao1GC descricao1GC $rod7to0G%&a ricanteGid as $rod7to0G%&a ricanteGid as&a &a ricanteSG1GC ricanteSG1GC $rod7to0G%nome as nome1GC $rod7to0G%nome as nome1GC $rod7to0G%ti$oGid $rod7to0G%ti$oGidas asti$o=G1GC ti$o=G1GC $rod7to0G%valor as valor1G $rod7to0G%valor as valor1G &rom &rom $7 $7 lic%$rod7to lic%$rod7to$rod7to0G $rod7to0G order 1 order 1 $rod7to0G%nome $rod7to0G%nome

63/97

Q7er1 com 408 * 23 0)em$lo

64/97

Q7er1 com 408 * 23 0)em$lo

65/97

Q7er1 com 408 * 23 0)em$lo


select select $rod7to0G%id $rod7to0G%idas ascolG0G0GC colG0G0GC $rod7to0G%nome $rod7to0G%nomeas ascolG1G0G colG1G0G &rom &rom $7 $7 lic%$rod7to lic%$rod7to$rod7to0G $rod7to0G order 1 order 1 $rod7to0G%nome $rod7to0G%nome

66/97

Batc/ 6$date * 13 0)em$lo

67/97

Batc/ 6$date * 13 0)em$lo

.i .i ernateD ernateD select select $rod7to0G%id $rod7to0G%idas asid1GC id1GC $rod7to0G%descricao $rod7to0G%descricaoas asdescricao1GC descricao1GC $rod7to0G%&a ricanteGid as $rod7to0G%&a ricanteGid as&a &a ricanteSG1GC ricanteSG1GC $rod7to0G%nome as nome1GC $rod7to0G%nome as nome1GC $rod7to0G%ti$oGid $rod7to0G%ti$oGidas asti$o=G1GC ti$o=G1GC $rod7to0G%valor as valor1G $rod7to0G%valor as valor1G &rom &rom $7 $7 lic%$rod7to lic%$rod7to$rod7to0G $rod7to0G Para Paracada cadaitem itemdo dores7ltado res7ltadoacima acima&azD &azD .i .i ernateD ernateD select select &a &a ricante0G%id ricante0G%idas asid0G0GC id0G0GC &a ricante0G%nome as &a ricante0G%nome asnome0G0G nome0G0G &rom &rom $7 $7 lic%&a lic%&a ricante ricante&a &a ricante0G ricante0G E/ere E/ere &a &a ricante0G%id]X ricante0G%id]X .i .i ernateD ernateD select select ti$o$rod7t0G%id ti$o$rod7t0G%idas asid2G0GC id2G0GC ti$o$rod7t0G%descricao ti$o$rod7t0G%descricaoas asdescricao2G0G descricao2G0G &rom &rom $7 $7 lic%ti$oG$rod7to lic%ti$oG$rod7toti$o$rod7t0G ti$o$rod7t0G E/ere E/ere ti$o$rod7t0G%id]X ti$o$rod7t0G%id]X %%% %%%

68/97

Batc/ 6$date * 13 0)em$lo

0)ec7ta 0)ec7ta$ara $aracada cadaitem itemdo dores7ltado res7ltadoda dalista% lista% .i .i ernateD ernateD 7$date 7$date $7 $7 lic%$rod7to lic%$rod7to set set valor]X valor]X E/ere E/ere -d]X -d]X %%% %%%

69/97

Batc/ 6$date * 23 0)em$lo

70/97

Batc/ 6$date * 23 0)em$lo

7$date 7$date $7 $7 lic%$rod7to lic%$rod7to set set valor]valor`X valor]valor`X

71/97

Batc/ %%%

Batc/ -nsert Batc/ Delete

72/97

Bin:rios

73/97

Bin:rios

74/97

Bin:rios

75/97

Bin:rios

select select $rocesso0G%id $rocesso0G%idas asid=G0GC id=G0GC $rocesso0G%dataDistri $rocesso0G%dataDistri 7icao 7icaoas asdataDist2G=G0GC dataDist2G=G0GC $rocesso0G%n7mero as n7mero=G0G $rocesso0G%n7mero as n7mero=G0G &rom &rom $7 $7 lic%Processo lic%Processo$rocesso0G $rocesso0G E/ere E/ere $rocesso0G%id]X $rocesso0G%id]X

76/97

Bin:rios

select select movimentos0G%$rocessoGid movimentos0G%$rocessoGidas as$rocessoSG=G1GC $rocessoSG=G1GC movimentos0G%id as id1GC movimentos0G%id as id1GC movimentos0G%id movimentos0G%idas asidJG0GC idJG0GC movimentos0G%data as movimentos0G%data asdataJG0GC dataJG0GC movimentos0G%descricao movimentos0G%descricaoas asdescricaoJG0GC descricaoJG0GC movimentos0G%n7mero as n7meroJG0GC movimentos0G%n7mero as n7meroJG0GC movimentos0G%$rocessoGid movimentos0G%$rocessoGidas as$rocessoSGJG0G $rocessoSGJG0G &rom &rom $7 $7 lic%#ovimento lic%#ovimentomovimentos0G movimentos0G E/ere E/ere movimentos0G%$rocessoGid]X movimentos0G%$rocessoGid]X

77/97

Bin:rios

( (cada cadaiterao iteraodo do"OR "ORdo domovimento movimento&azD &azD select select arI7ivos0G%movimentoGid arI7ivos0G%movimentoGidas asmovimentoVGJG1GC movimentoVGJG1GC arI7ivos0G%id as id1GC arI7ivos0G%id as id1GC arI7ivos0G%id arI7ivos0G%idas asidVG0GC idVG0GC arI7ivos0G%conte7do arI7ivos0G%conte7doas asconte7doVG0GC conte7doVG0GC arI7ivos0G%conte7doGti$o arI7ivos0G%conte7doGti$oas asconte7do3GVG0GC conte7do3GVG0GC arI7ivos0G%dataGveri&icacaoGassinat7ra arI7ivos0G%dataGveri&icacaoGassinat7raas asdataPGVG0GC dataPGVG0GC arI7ivos0G%movimentoGid as movimentoVGVG0GC arI7ivos0G%movimentoGid as movimentoVGVG0GC arI7ivos0G%nome arI7ivos0G%nomeas asnomeVG0GC nomeVG0GC arI7ivos0G%signatario arI7ivos0G%signatarioas assignatarioVG0G signatarioVG0G &rom &rom $7 $7 lic%(rI7ivo lic%(rI7ivoarI7ivos0G arI7ivos0G E/ere E/ere arI7ivos0G%movimentoGid]X arI7ivos0G%movimentoGid]X

78/97

Bin:rios

Somente SomenteI7ando I7andooo7s7:rio 7s7:rioclicar clicar neste lin< I7e vamos mostrar o conteOdo neste lin< I7e vamos mostrar o conteOdo do doarI7ivo% arI7ivo% XXXX XXXX

79/97

Bin:rios

80/97

Bin:rios

81/97

Bin:rios

82/97

Bin:rios

83/97

Bin:rios

select select $rocesso0G%id $rocesso0G%idas asid=G0GC id=G0GC $rocesso0G%dataDistri $rocesso0G%dataDistri 7icao 7icaoas asdataDist2G=G0GC dataDist2G=G0GC $rocesso0G%n7mero as n7mero=G0G $rocesso0G%n7mero as n7mero=G0G &rom &rom $7 $7 lic%Processo lic%Processo$rocesso0G $rocesso0G E/ere E/ere $rocesso0G%id]X $rocesso0G%id]X

84/97

Bin:rios

select select movimentos0G%$rocessoGid movimentos0G%$rocessoGidas as$rocessoSG=G1GC $rocessoSG=G1GC movimentos0G%id as id1GC movimentos0G%id as id1GC movimentos0G%id movimentos0G%idas asidJG0GC idJG0GC movimentos0G%data as movimentos0G%data asdataJG0GC dataJG0GC movimentos0G%descricao movimentos0G%descricaoas asdescricaoJG0GC descricaoJG0GC movimentos0G%n7mero as n7meroJG0GC movimentos0G%n7mero as n7meroJG0GC movimentos0G%$rocessoGid movimentos0G%$rocessoGidas as$rocessoSGJG0G $rocessoSGJG0G &rom &rom $7 $7 lic%#ovimento lic%#ovimentomovimentos0G movimentos0G E/ere E/ere movimentos0G%$rocessoGid]X movimentos0G%$rocessoGid]X

85/97

Bin:rios

( (cada cadaiterao iteraodo do"OR "ORdo domovimento movimento&azD &azD select select arI7ivos0G%movimentoGid arI7ivos0G%movimentoGidas asmovimentoVG11G1GC movimentoVG11G1GC arI7ivos0G%id as id1GC arI7ivos0G%id as id1GC arI7ivos0G%id arI7ivos0G%idas asidVG0GC idVG0GC arI7ivos0G%conte7doGid arI7ivos0G%conte7doGidas asconte7do=GVG0GC conte7do=GVG0GC arI7ivos0G%conte7doGti$o as arI7ivos0G%conte7doGti$o asconte7do2GVG0GC conte7do2GVG0GC arI7ivos0G%dataGveri&icacaoGassinat7ra arI7ivos0G%dataGveri&icacaoGassinat7raas asdata3GVG0GC data3GVG0GC arI7ivos0G%movimentoGid as movimentoVGVG0GC arI7ivos0G%movimentoGid as movimentoVGVG0GC arI7ivos0G%nome arI7ivos0G%nomeas asnomeVG0GC nomeVG0GC arI7ivos0G%signatario arI7ivos0G%signatarioas assignatarioVG0G signatarioVG0G &rom &rom $7 $7 lic%arI7iv0 lic%arI7iv0arI7ivos0G arI7ivos0G E/ere E/ere arI7ivos0G%movimentoGid]X arI7ivos0G%movimentoGid]X

86/97

Q7er1 com "0;2.

87/97

Q7er1 com "0;2.

select select $rocess0)0G%id $rocess0)0G%idas asidPG0GC idPG0GC movimentos1G%id as movimentos1G%id asidNG1GC idNG1GC $rocess0)0G%dataDistri $rocess0)0G%dataDistri 7icao 7icaoas asdataDist2GPG0GC dataDist2GPG0GC $rocess0)0G%n7mero as n7meroPG0GC $rocess0)0G%n7mero as n7meroPG0GC movimentos1G%data movimentos1G%dataas asdataNG1GC dataNG1GC movimentos1G%descricao movimentos1G%descricaoas asdescricaoNG1GC descricaoNG1GC movimentos1G%n7mero as n7meroNG1GC movimentos1G%n7mero as n7meroNG1GC movimentos1G%$rocessoGid movimentos1G%$rocessoGidas as$rocessoSGNG1GC $rocessoSGNG1GC movimentos1G%$rocessoGid as $rocessoSGPG0GGC movimentos1G%$rocessoGid as $rocessoSGPG0GGC movimentos1G%id movimentos1G%idas asid0GG id0GG &rom &rom $7 $7 lic%$rocess0 lic%$rocess0$rocess0)0G $rocess0)0G le&t o7ter !oin le&t o7ter !oin $7 $7 lic%moviment0 lic%moviment0movimentos1G movimentos1G on $rocess0)0G%id]movimentos1G%$rocessoGid on $rocess0)0G%id]movimentos1G%$rocessoGid E/ere E/ere $rocess0)0G%id]X $rocess0)0G%id]X

88/97

Q7er1 com "0;2.

(gora (gorano no&az &aznadaC nadaC!: !:carrego7 carrego7os os movimentos na cons7lta anterior% movimentos na cons7lta anterior%

89/97

Q7er1 com "0;2.


( (cada cadaiterao iteraodo do"OR "ORdo domovimento movimento&azD &azD select select arI7ivos0G%movimentoGid arI7ivos0G%movimentoGidas asmovimentoVG11G1GC movimentoVG11G1GC arI7ivos0G%id as id1GC arI7ivos0G%id as id1GC arI7ivos0G%id arI7ivos0G%idas asidVG0GC idVG0GC arI7ivos0G%conte7doGid arI7ivos0G%conte7doGidas asconte7do=GVG0GC conte7do=GVG0GC arI7ivos0G%conte7doGti$o as arI7ivos0G%conte7doGti$o asconte7do2GVG0GC conte7do2GVG0GC arI7ivos0G%dataGveri&icacaoGassinat7ra arI7ivos0G%dataGveri&icacaoGassinat7raas asdata3GVG0GC data3GVG0GC arI7ivos0G%movimentoGid as movimentoVGVG0GC arI7ivos0G%movimentoGid as movimentoVGVG0GC arI7ivos0G%nome arI7ivos0G%nomeas asnomeVG0GC nomeVG0GC arI7ivos0G%signatario arI7ivos0G%signatarioas assignatarioVG0G signatarioVG0G &rom &rom $7 $7 lic%arI7iv0 lic%arI7iv0arI7ivos0G arI7ivos0G E/ere E/ere arI7ivos0G%movimentoGid]X arI7ivos0G%movimentoGid]X

90/97

Batc/Size

91/97

Batc/Size

92/97

Batc/Size

93/97

Batc/Size

select select $rocess0)0G%id $rocess0)0G%idas asidPG0GC idPG0GC movimentos1G%id as movimentos1G%id asidNG1GC idNG1GC $rocess0)0G%dataDistri $rocess0)0G%dataDistri 7icao 7icaoas asdataDist2GPG0GC dataDist2GPG0GC $rocess0)0G%n7mero as n7meroPG0GC $rocess0)0G%n7mero as n7meroPG0GC movimentos1G%data movimentos1G%dataas asdataNG1GC dataNG1GC movimentos1G%descricao movimentos1G%descricaoas asdescricaoNG1GC descricaoNG1GC movimentos1G%n7mero as n7meroNG1GC movimentos1G%n7mero as n7meroNG1GC movimentos1G%$rocessoGid movimentos1G%$rocessoGidas as$rocessoSGNG1GC $rocessoSGNG1GC movimentos1G%$rocessoGid as $rocessoSGPG0GGC movimentos1G%$rocessoGid as $rocessoSGPG0GGC movimentos1G%id movimentos1G%idas asid0GG id0GG &rom &rom $7 $7 lic%$rocess0 lic%$rocess0$rocess0)0G $rocess0)0G le&t o7ter !oin le&t o7ter !oin $7 $7 lic%moviment0 lic%moviment0movimentos1G movimentos1G on $rocess0)0G%id]movimentos1G%$rocessoGid on $rocess0)0G%id]movimentos1G%$rocessoGid E/ere E/ere $rocess0)0G%id]X $rocess0)0G%id]X

94/97

Batc/Size

(gora (gorano no&az &aznadaC nadaC!: !:carrego7 carrego7os os movimentos na cons7lta anterior% movimentos na cons7lta anterior%

95/97

Batc/Size
select select arI7ivos0G%movimentoGid arI7ivos0G%movimentoGidas asmovimentoVG11G1GC movimentoVG11G1GC arI7ivos0G%id as id1GC arI7ivos0G%id as id1GC arI7ivos0G%id arI7ivos0G%idas asidVG0GC idVG0GC arI7ivos0G%conte7doGid arI7ivos0G%conte7doGidas asconte7do=GVG0GC conte7do=GVG0GC arI7ivos0G%conte7doGti$o as arI7ivos0G%conte7doGti$o asconte7do2GVG0GC conte7do2GVG0GC arI7ivos0G%dataGveri&icacaoGassinat7ra arI7ivos0G%dataGveri&icacaoGassinat7raas asdata3GVG0GC data3GVG0GC arI7ivos0G%movimentoGid as movimentoVGVG0GC arI7ivos0G%movimentoGid as movimentoVGVG0GC arI7ivos0G%nome arI7ivos0G%nomeas asnomeVG0GC nomeVG0GC arI7ivos0G%signatario arI7ivos0G%signatarioas assignatarioVG0G signatarioVG0G &rom &rom $7 $7 lic%arI7iv0 lic%arI7iv0arI7ivos0G arI7ivos0G E/ere E/ere arI7ivos0G%movimentoGid arI7ivos0G%movimentoGidin inA A XC XCXC XCXC XCXC XCXX HH

96/97

6tilizar
A vontade Hibernate Statistics Pa ina!"o I7er1%set"irstRes7ltAH Q O&&set I7er1%set#a)Res7ltsAH Q Limit Pool de cone#$es ($lication server * 0)D ,BOSS (S 23P0 Co% ca&tela S'l nativo ( Proced&res Desnor%ali)a!"o

97/97

Obri ado *+

Das könnte Ihnen auch gefallen