Você está na página 1de 28

JPA:PersistnciapadronizadaemJava

BacharelemEngenhariadeComputao flaviocurte.java@gmail.com

FLVIOHENRIQUECURTE

ProgramaoOrientadaaObjetos X BancodeDadosRelacionais = Paradigmasdiferentes

JavaDatabaseConnectivity(JDBC)

Trabalhanomesmonveldobancodedados.O acessoasinformaescontidasnobancoso realizadasatravsdecomandosSQL.

JavaDatabaseConnectivity(JDBC)
(Driver)Protocolodebancodedados

CLIENTE

JDBC

Servidor de banco dedados

Horstmann,CayS.,Cornell,Gary.Corejava2VolumeIIRecursosavanados, pg.181.SoPaulo:MakronBooks,2001.

JavaDatabaseConnectivity(JDBC)
TiposdedriversJDBC:
Tipo1:JDBCODBCbridge.Adaptaododriver ODBCparaJDBC,utilizandoosrecursosdoODBC parasecomunicarcomobancodedados; Tipo2:JDBCNativeBridge.Convertechamadas JDBCdaaplicaoJavaparachamadasdeum drivernativojinstaladonamquina.A comunicaododrivernativorealizadaatravsde umprotocoloproprietrio;

TiposdedriversJDBC(continuao):

JavaDatabaseConnectivity(JDBC)

Tipo3:JDBCNetbridge.BibliotecaclienteJava Independente pura. Protocolo BancodeDados independente


Comunica comunicapedidos pedidos ProtocoloEspecfico Transformapedidos transforma ComponenteServidor

Tipo4:AllJavaJDBCDriver.100%escritoem JavaquetransformapedidosJDBCdiretamenteem umprotocoloespecficodobancodedados.

Exemplo:

JavaDatabaseConnectivity(JDBC)
publicstaticvoidmain(String[]args)throws Exception{ Stringsql="SELECT*FROMjpa"; con=open(); try{ Statementcomando= con.createStatement(); ResultSetresultado= comando.executeQuery(sql); while(resultado.next()){ System.out.println(resultado.getString("nome")); System.out.println(resultado.getString("email")); } }catch(SQLExceptionex){ ex.printStackTrace(); }finally{ con.close(); } } }

importjava.sql.*; publicclassJDBC{ privatestaticConnectioncon=null; publicJDBC(){ } publicstaticConnectionopen(){ Stringuser="postgres"; Stringpass="postgres"; Stringurl= "jdbc:postgresql://192.168.1.11/javanoroeste"; try{ Class.forName("org.postgresql.Driver"); con= DriverManager.getConnection(url,user,pass); } catch(Exceptione){ e.printStackTrace(); } returncon; }

R E A T E

publicstaticConnectionopen(){ Stringuser="postgres"; Stringpass="postgres"; Stringurl="jdbc:postgresql://192.168.1.11/javanoroeste"; try{ Class.forName("org.postgresql.Driver"); con=DriverManager.getConnection(url,user,pass); } catch(Exceptione){ e.printStackTrace(); } returncon; }

P D A T E

publicstaticConnectionopen(){ Stringuser="postgres"; Stringpass="postgres"; Stringurl="jdbc:postgresql://192.168.1.11/javanoroeste"; try{ Class.forName("org.postgresql.Driver"); con=DriverManager.getConnection(url,user,pass); } catch(Exceptione){ e.printStackTrace(); } returncon; }

E A D

publicstaticConnectionopen(){ Stringuser="postgres"; Stringpass="postgres"; Stringurl="jdbc:postgresql://192.168.1.11/javanoroeste"; try{ Class.forName("org.postgresql.Driver"); con=DriverManager.getConnection(url,user,pass); } catch(Exceptione){ e.printStackTrace(); } returncon; }

D
publicstaticConnectionopen(){ Stringuser="postgres"; Stringpass="postgres"; Stringurl="jdbc:postgresql://192.168.1.11/javanoroeste"; try{ Class.forName("org.postgresql.Driver"); con=DriverManager.getConnection(url,user,pass); } catch(Exceptione){ e.printStackTrace(); } returncon; }

E L E T E

Qualasoluoparaarmazenarobjetosna tecnologiarelacional?

MapeamentoObjeto/Relacional

AidiadapersistnciaO/Rreuniras vantagensdeseutilizarummodeloorientadoa objetosparaaconstruodeumaaplicao, comaperformaceeaconfiabilidadedosbancos dedadosrelacionais.

MapeamentoObjeto/Relacional

APLICAO Objetos MapeamentoO/R InterfaceBDR

SGBDR

Tabelas InterfaceBDR

Figura:Doederlein,OsvaldoPinali.RevistaJavaMagazine,ed.42,p.22.

MapeamentoObjeto/Relacional
FrameworkHibernate: ProgramaoOO(herana,polimorfismoetc); Semaumentodetemponaconstruoda aplicao Gratuitoeaberto Portvelparatodososbancoscompatveis comopadroSQL

MapeamentoObjeto/Relacional
APLICAO objetospersistentes HIBERNATE hibernate. properties mapeamento XML

BANCODEDADOS
Figura:Boaglio,Fernando.RevistaSQLMagazine,ed.17,p.40.

MapeamentoObjeto/Relacional

FrameworkHibernateeJDO:duasgrandes ferramentasdepersistnciaORM. JPA:Assimcomoosframeworkscitados acima,sobaseadosemPOJOs(PlainOldJava Objects).

JavaPersistenceAPI1.0
DefinidanaJSR220(EnterpriseJavaBeans, Version3.0) Formasimplesdemapearobjetosnobancode dados PadronizaomapeamentoO/R

JavaPersistenceAPI1.0

Soluocompletaparamapeamentoe persistnciadeobjetos:mododeclarativode descrevermapeamentoO/R,linguagemde consulta,ferramentasparamanipularentidades Aumentodeprodutividade:JCP=padronizao

JavaPersistenceAPI1.0
EntityManager:responsvelporpraticamente todasoperaesdepersistnciadeobjetos PersistenceContext:readememriaque mantmosobjetosqueestosendo manipuladospeloEntityManager Provedores:especificaoparaframeworksde persistncia

JavaPersistenceAPI1.0
AplicaoJAVA JavaPersistenceAPI ProvedorJPA (Hibernate,TopLink,Kodo,OpenJPAetc) APIJDBC DRIVERJDBC (MySQL,PostgreSQL,JavaDB,Oracleetc)

SGBDR
AdaptadodeBellia,Renato.RevistaJavaMagazine,ed.44,p.28.

JavaPersistenceAPI1.0

PersistenceUnit:Configuraodoprovedor JPAparalocalizarobancodedadose estabelecerconexesJDBC.

JavaPersistenceAPI1.0
Mapeamento: Classeseinterfacesestonopacote: javax.persistence Usoanotaes(@) Configuraoporexceo

JavaPersistenceAPI1.0
Anotao:
@EntitydesignaumPOJO

@Entity publicclassFuncionarioimplementsSerializable{ ... }

JavaPersistenceAPI1.0
Anotao:
@TablePorpadro,aJPAassumequetodososcampos persistentesdeumaentidadeseroarmazenadosemum BDcomomesmonomedaentidade.

@Entity @Table(name="FUN") publicclassFuncionarioimplementsSerializable{ ... }

JavaPersistenceAPI1.0
Anotao:
@Columnporpadro,aJPAassumequeonomedecada atributocorrespondeaomesmonomenatabela

@Entity publicclassFuncionarioimplementsSerializable{ ... @Column(name="FUN_ID") privateLongId; ... }


JavaPersistenceAPI1.0
Anotao:
@Ididentificadordachaveprimria

@Entity publicclassFuncionarioimplementsSerializable{ ... @Id @Column(name="FUN_ID") privateLongId; ... }

JavaPersistenceAPI1.0
Anotao:
@NamedQuerycriaconsultaprdefinida(esttica) associadocomo@Entity

@Entity @NamedQuery(name=ConsultaPorId,query=SELECTfFROM FuncionariosfWHEREf.id=:id) publicclassFuncionarioimplementsSerializable{ ... }


JavaPersistenceAPI1.0
Outrasanotaesmaiscomuns: @GeneratedValuegeraoautomticadeidentificadores @Temporalparainformaesrelacionadasaotempo (DATE,TIMEeTIMESTAMP) @OneToManypararelacionamentosumparamuitosem BDrelacional @ManyToOnepararelacionamentomuitosparaumem BDrelacional

Demonstrao

JPA:PersistnciapadronizadaemJava
BacharelemEngenhariadeComputao flaviocurte.java@gmail.com

FLVIOHENRIQUECURTE

Você também pode gostar