manual 2015-i 06 proyecto empresarial (ci) (0780)

Upload: malcon1982

Post on 07-Aug-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    1/179

     

    ProyectoEmpresarial

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    2/179

    PROYECTO EMPRESARIAL 2

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    3/179

    PROYECTO EMPRESARI AL 3

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    ÍndicePresentación 5Red de contenidos 7

    Unidad de Aprendizaje 1JAVA PERSISTENCE API 9

    1.1 Tema 1 : Introdcci!n al API de Persistencia JPA 1"1.1.1 : Entidad 121.1.2 : Metadata 131.1.3 : EntityManager 141.1.4 : Unidad de Persistencia 151.1.5 : Operaciones básicas 171.1. : !ransacciones 191.1.7 : "ic#o de $ida de %na Entidad  19

    1." Tema " : #R$%appin& con JPA "'1.2.1 : &notaciones 231.2.2 : Mane'o de #a (#a)e Pri*aria 2+1.2.3 : ,eneración de #a (#a)e Pri*aria 2+1.2.4 : (#a)e Pri*aria "o*p%esta 321.2.5 : Ob'etos E*bebidos 35

    1.' Tema ' : Relaciones entre entidades  '(1.3.1 : "onceptos básicos 3+1.3.2 : Re#ación Many !o One 4-1.3.3 : Re#ación One to One 421.3.4 : idirecciona#idad de #a re#ación One/!o/One 431.3.5 : Re#ación One !o Many 441.3. : Re#ación Many !o Many 41.3.7 : Opciones de 0etc 49

    1.) Tema ) : T*e Ja+a Persistence ,ery -an&a&e. 11.4.1 : ntrod%cción a P/( 511.4.2 : "ons%#tas diná*icas 51.4.3 : "ons%#tas no*bradas 5+1.4.4 : Uso de pará*etros -1.4.5 E'ec%ción de %eries 11.4. inta6is de P( 3

    Unidad de Aprendizaje "JAVA SERVER /ACES " 9

    ".1 Tema : /ndamentos de JS/ 0"2.1.1 : ntrod%cción a 0 722.1.2 : &r%itect%ra de 0 732.1.3 : "ic#o de )ida de %n re%est 772.1.4 : 0ace#ets +12.1.5 : Managed ean +92.1. : (eng%a'e de E6presiones 0 922.1.7 : ac8ing eans 95

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    4/179

    PROYECTO EMPRESARIAL 4

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    "." Tema : Componentes de Inter2az de sario 302.2.1 : ntrod%cción 972.2.2 : &r%itect%ra de "o*ponentes U 9+2.2.3 (ibrera "ore 1-22.2.4 (ibrera !M( 1-+

    2.2.5 (ibrera User nter;ace 1172.2. (ibrera de "o*ponentes "o*p%estos 117

    ".' Tema 0 : Con+ersiones4 Validaciones y E+entos 1132.3.1 : ntrod%cción 1192.3.2 : E# siste*a de "on)ersión de 0 1192.3.3 E# siste*a de $a#idación de 0 1222.3.4 E# siste*a de Mensa'es de 0 1232.3.5 E# *ode#o de E)entos de 0 131

    ".) Tema ( : Inte&raci!n JS/ y JPA 1"02.4.1 : 0 y &&< 1272.4.2 : ntegración 0 = P& 132.4.3 : E*p#eando otras i*p#e*entaciones de 0 1372.4.4 : !ab#as 0: 0acets> data!ab#e y pane#,rid 1412.4.5 : Manteni*iento de tab#as 14+

    Unidad de Aprendizaje 'SPRIN5 /RA%E6#R7 1

    '.1 Tema 3 : Sprin& Core 103.1.1 : ntrod%cción 1573.1.2 : &r%itect%ra 11

    '." Tema 18 : Sprin& 6e9 1)3.2.1 : ntrod%cción 14

    3.2.2 : "on;ig%ración 14'.' Tema 11 : Sprin& %!dlos 10)

    3.3.1 : pring sec%rity 174

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    5/179

    PROYECTO EMPRESARI AL 5

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    Presen!ci"n

    E# c%rso de Proyecto Empresarial; pertenece a #a #nea de Progra*ación dentro de #a

    "arrera de "o*p%tación e n;or*ática y brinda %n con'%nto de conoci*ientos yerra*ientas %e per*itirán a #os a#%*nos poder desarro##ar ap#icaciones ?eb de n/capas %ti#i@ando #os ;ra*e?or8s a)a : a)a Persistence &P A P& B> a)a er)er 0acesA 0 B y pring 0ra*e?or8.

    E# *an%a# de# c%rso a sido diseCado ba'o #a *oda#idad de Unidades de &prendi@a'e> #as

    %e desarro##an deter*inados te*as a #o #argo de #as se*anas estab#ecidas para e#dictado de# c%rso. "ada capt%#o de# *an%a# indica #os te*as a ser tratados> #os #ogros%e se deben a#can@ar y #os contenidos %e se deben desarro##ar. 0ina#*ente> seencontrará #as acti)idades reco*endadas %e e# a#%*no deberá desarro##ar parare;or@ar #o traba'ado y aprendido en #a c#ase. e inc#%ye bib#iogra;a y rec%rsos deinternet %e p%ede co#aborar en e# #ogro de %n a%toaprendi@a'e e;ecti)o.

    E# c%rso es e*inente*ente práctico> pero re%iere oras adiciona#es de in)estigación ypráctica por parte de# a#%*no. e inicia con %n #os conceptos de DOR/Mapping con #aespeci;icación P& Aa)a Persistence &PB y s% i*p#e*entación en Ec#ipse(in8: seabordan #as anotaciones> *apeo y re#aciones entre entidades as co*o #os ;%nda*entos

    básicos de P/( para #a constr%cción de cons%#tas. (%ego> #a seg%nda %nidad de#*an%a# aborda #a especi;icación 0 Aa)a er)er 0acesB tratando de abarcar granparte de #a ;%nciona#idad %e proporciona. 0ina#*ente> se aborda en #a tercera %nidad e#;ra*e?or8 de pring: &r%itect%ra> Feb y ec%rity.

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    6/179

    PROYECTO EMPRESARIAL #

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    7/179

    PROYECTO EMPRESARI AL $

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    Red de c%nenid%s

    Proyecto Empresarial

    Sprin&

    Spring Core  Spring Web

    Ja+aPersistence

    API

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    8/179

    PROYECTO EMPRESARIAL &

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    9/179

    PROYECTO EMPRESARI AL '

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    UNIDAD 

    ()A*A PERSISTENCE API-#5R# >E -A UNI>A> >E APREN>I?AJE  tGr*ino de #a %nidad> e# a#%*no p%ede rea#i@ar transacciones y cons%#taspara reportes %sando P( a ni)e# e*presaria#.

    TE%ARI# 1.1 Tema 1 : Introdcci!n al API de Persistencia JPA1.1.1 : Entidad1.1.2 : Metadata1.1.3 : EntityManager1.1.4 : Unidad de Persistencia1.1.5 : Operaciones básicas1.1. : !ransacciones1.1.7 : "ic#o de $ida de %na Entidad

    1." Tema " : #R$%appin& con JPA1.2.1 : &notaciones1.2.2 : Mane'o de #a (#a)e Pri*aria

    1.2.3 : ,eneración de #a (#a)e Pri*aria1.2.4 : (#a)e Pri*aria "o*p%esta1.2.5 : Ob'etos E*bebidos

    1.' Tema ' : Relaciones entre entidades1.3.1 : "onceptos básicos1.3.2 : Re#ación Many !o One1.3.3 : Re#ación One to One1.3.4 : idirecciona#idad de #a re#ación One/!o/One1.3.5 : Re#ación One !o Many1.3. : Re#ación Many !o Many1.3.7 : Opciones de 0etc

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    10/179

    PROYECTO EMPRESARIAL (+

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    1.) Tema ) : T*e Ja+a Persistence ,ery -an&a&e.1.4.1 : ntrod%cción a P/(1.4.2 : "ons%#tas diná*icas1.4.3 : "ons%#tas no*bradas1.4.4 : Uso de pará*etros

    1.4.5 E'ec%ción de %eries1.4. inta6is de P(

    ACTIVI>A>ES PR#PUESTAS 

      Reconocer #as c#ases de #a &P Persistencia P&  (os a#%*nos escriben c#ases a)a> #as con)ierten en Entidades P& y

    traba'an con tab#as re#aciona#es.  (as a#%*nos desarro##an ap#icaciones a)a stand/a#one aciendo %so de

    entidades P&.  *p#e*entar inserciones de sentencias P( a #a base de datos.  *p#e*entar cons%#tas y transacciones de sentencias P( a #a base de

    datos.  *p#e*entar inserciones de sentencias P( a #a base de datos.  *p#e*entar cons%#tas y transacciones de sentencias P( a #a base de

    datos.

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    11/179

    PROYECTO EMPRESARI AL ((

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    12/179

    PROYECTO EMPRESARIAL (2

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    1.1. INTR#>UCCI@N A- API >E PERSISTENCIA JPA

    (a tGcnica %e per*ite acortar #as di;erencias entre e# *ode#o re#aciona# y e# *ode#ode ob'etos se conoce co*o #R%  AMapeo Re#aciona# a Ob'etosB. (a idea básica ses%stenta en %e para *apear #os conceptos de %n *ode#o a# otro Ao )ice)ersaB sere%iere de %n *ediador %e *ane'e de ;or*a a%to*ática #a trans;or*ación.

    (a istoria de P& se origina en dos ;ra*e?or8s de persistencia bastante %ti#i@ados:en e# #ado propietario e6ista TopLink  *ientras %e en e# #ado Dopen estaba Hibernate.P& es %na especi;icación basada en e# R 22- conocido co*o DEnterprise a)aean 3.- Attp:HH'cp.orgHenH'srHdetai#IidJ22- B.

    ser %na especi;icación Ao %n con'%nto de &PKsB está s%'eta a di)ersasi*p#e*entaciones de di)ersos ;abricantes. (a idea principa# es %e sea %n 0ra*e?or8#igero> basado en POOs y p%eda en;rentar desa;os de ar%itect%ra e integración enap#icaciones e*presaria#es.

    g%nas i*p#e*entaciones de P&:

    ibernate ttp:HH???.ibernate.orgH 

    !op(in8 ttp:HH???.orac#e.co*Htecnet?or8H*idd#e?areHtop#in8Ho)er)ie?Hinde6.t*# 

    OpenP& ttp:HHopen'pa.apace.orgH 

    Ec#ipse(in8 ttp:HH???.ec#ipse.orgHec#ipse#in8H 

    1.1.1. Entidad

    E# concepto de DEntidad ;%e introd%cido por Peter "en en %n doc%*ento ##a*adoD!e Entity/re#ationsip *ode# L o?ard a %ni;ied )ie? o; data p%b#icado en D&"M!ransactions on atabase yste*s en e# aCo de 1971.

    En dico doc%*ento> se describa a #as entidades co*o cosas %e tenan Datrib%tos yDre#aciones con #a e6pectati)a de %e dicos atrib%tos y re#aciones p%dieran sera#*acenados en #a base de datos.

    En #a act%a#idad> dica de;inición es )igente dado %e c%a#%ier ob'eto dentro de %naap#icación P& p%ede ser %na entidad> ay %e de;inir #as caractersticas %e debe

    poseer %na DEntidad:

      Persistencia: #as entidades p%eden ser *anip%#adas para rec%perase en*e*oria o ser grabadas en %n a#*acGn de datos.

    1 Una copia del documento se puede obtener en el enlace:

    http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.123.1085rep=rep1t!pe=pd"  

    http://jcp.org/en/jsr/detail?id=220http://jcp.org/en/jsr/detail?id=220http://jcp.org/en/jsr/detail?id=220http://www.oracle.com/technetwork/middleware/toplink/overview/index.htmlhttp://openjpa.apache.org/http://openjpa.apache.org/http://www.eclipse.org/eclipselink/http://www.eclipse.org/eclipselink/http://www.eclipse.org/eclipselink/http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.123.1085&rep=rep1&type=pdfhttp://www.eclipse.org/eclipselink/http://openjpa.apache.org/http://www.oracle.com/technetwork/middleware/toplink/overview/index.htmlhttp://www.oracle.com/technetwork/middleware/toplink/overview/index.htmlhttp://www.hibernate.org/http://jcp.org/en/jsr/detail?id=220

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    13/179

    PROYECTO EMPRESARI AL (3

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

      Identidad: signi;ica %e #as entidades tienen %n identi;icador %e per*itee*p#ear#as de *anera ine%)oca y di;erenciar#as de otras instancias de #a*is*a entidad. E# identi;icador de #a entidad es e%i)a#ente a #a ##a)e pri*ariade %na tab#a en #a base de datos.

      Transaccionalidad: !odas #as operaciones Ainsertar> *odi;icar o e#i*inarB

    deben rea#i@arse dentro de %n conte6to transacciona# debido a %e se re%ierede %na transacción para %e #os ca*bios sean grabados en #a base de datos.

      5ranlaridad: (as entidades son ob'etos %e pertenecen a %n do*inio denegocio> poseen %n con'%nto de estados y por tanto son re#e)antes para #aap#icación Ano se trata de ob'etos con tipo pri*iti)o> sino de ob'etos *ásco*p#e'osB.

    1.1.". %etadata

    "ada entidad tiene asociado %na D*etadata %e #a describe. ica in;or*ación p%ede

    estar a#*acenada dentro de #a entidad a)a o p%ede e6istir en %n arci)o e6terno: ena*bos casos> esa in;or*ación no se a#*acena en #a base de datos.

    E6isten dos *aneras de especi;icar #a *etadata:

      Usando &notaciones

      Usando

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    14/179

    PROYECTO EMPRESARIAL (4

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    No se debe o#)idar %e a# ser %n a)aean> sig%e #as reg#as de este Acon #osgetterHsetterB.

    1.1.'. Entity%ana&er

    (a *ayora de ##a*adas a #as &PKs de P& se encaps%#an dentro de #o %e se conoceco*o DEntity Manager y *ediante e# c%a# se p%ede a#can@ar a #a base de datos.

    Esta encaps%#ación es i*p#e*entada dentro de %na inter;ace conocida co*oEntity%ana&er  %e es #a %e e'ec%ta todo e# traba'o de persistencia. Por tanto> %naentidad *ientras %e no se traba'e con e# Entity Manager es %n ob'eto a)a si*p#eco*o c%a#%ier otro.

    "%ando e# Entity *anager obtiene %na re;erencia a %na Entidad> se dice %e dicaentidad está en estado Dmana&ed

    E# con'%nto de entidades en estado D*anaged dentro de %n Entity Manager se conoceco*o Dpersistence contet.

    (os Entity Managers son con;ig%rados para traba'ar con deter*inados tipos deob'etos> bases de datos y son i*p#e*entados por %n pro)eedor Apro)iderB conocidoco*o Dpersistence pro+ider . En tGr*inos prácticos este pro)ider es #ai*p#e*entación de #a especi;icación P&.

    (os Entity Managers se generan a partir de %na ;actora de tipo

    Entity%ana&er/actory> %e genera %na especie de p#anti##a para #a persistencia> peroto*a #a con;ig%ración partic%#ar desde %na %nidad de persistencia conocida co*oDpersistence nit> #a c%a# contiene #a con;ig%ración i*p#cita o e6p#cita Acon %nno*bre asociado B para #as entidades y para e# Entity Manager.

    E# grá;ico2 res%*e #as re#aciones entre #os conceptos *encionados:

    2 #U$%&$: '()* 2: +asterin, the (ava )ersistence *)- p, 23.

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    15/179

    PROYECTO EMPRESARI AL (5

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    Un Entity Manager se obtiene de #a sig%iente ;or*a:

    1.1.). Unidad de Persistencia

    (a con;ig%ración de %na %nidad de persistencia se escribe en %n arci)o ##a*adoDpersistence.xml> e# c%a# debe estar %bicado dentro de# ;o#der META-INF  de %n

    proyecto a)a."ada %nidad de persistencia tiene %n no*bre> e# c%a# es re;erenciado por #a ;actora a#*o*ento de pedir#e %e genere %n EntityManager.

    Un arci)o persistence.xml  p%ede contener %na o *ás %nidades de persistencia>siendo cada %na di;erente de #a otra.

    (a estr%ct%ra básica de %n arci)o persistence.xml es #a sig%iente:

    N ombre d e l a “  persistence unit”  Debe ser  el mismo que aparece en el archivo  persistence.xml  

    Clase estática

    Variable con el Entity Manager cargado

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    16/179

    PROYECTO EMPRESARIAL (#

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    ebido a %e es %n arci)o debe tener %n !:

    (%ego> )iene #a de;inición de #a Unidad de persistencia> e# pro)eedor y #as c#ases a)ade;inidas co*o entidades:

    E# )a#or de REOUR"E(O"&( indica %e #a cone6ión a #a base de datos se rea#i@arádesde #a *is*a ap#icación ANo e*p#ea Poo# de cone6ionesB.

    esp%Gs> se de;inen #as propiedades de cone6ión a #a base de datos:

    N ombre de la “persistence unit”

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    17/179

    PROYECTO EMPRESARI AL ($

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    0ina#*ente se cierran #os tags e%i)a#e a insertar %no o *ás registros en #a base de datos.

    i oc%rre %n error d%rante #a e'ec%ción de# Dpersist> se #an@a #a e6cepciónPersistenceEception> #a c%a# debe será propagada> debiendo ser *ane'ada por e#progra*a.

    S e instancia el objeto 

    J ava 

    S e cargan l os val ores 

    d e l os atributos 

    S e ejec uta el métod o “  persist”  

    med iante el E ntityManager  

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    18/179

    PROYECTO EMPRESARIAL (&

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    Para %bicar a %na Entidad e*p#eando e# *Gtodo D;ind> genera#*ente se re%iere so#o%na #nea de código:

    i #a entidad con #a ##a)e pri*ara indicada no e6iste> e# EntityManager de)o#)erá NU((.(a ap#icación debe )eri;icar e# )a#or antes de %sar #a )ariab#e De*p en e# caso de#e'e*p#o.

    Para e#i*inar %na entidad> se ace %so de# *Gtodo Dre*o)e. in e*bargo se debetener en consideración %e para e#i*inar %na entidad en P&> pri*ero debe co#ocarseen estado D*anaged> es decir> debe cargarse a# conte6to de persistencia.

    "o*o se *encionó anterior*ente> si #a entidad no e6iste e# EntityManager de)o#)eráNU((> por #o %e se debe e)a#%ar dica condición antes de in)ocar a# *Gtodo

    Dre*o)e.

    i se en)a %n )a#or de NU(( a# Dre*o)e> P& #an@ará #a e6cepción ja+a.lan&.Ile&alAr&mentEception.

    Para act%a#i@ar atrib%tos de %na entidad> se e*p#ea e# *Gtodo D*erge. e re%iere%bicar a #a entidad antes de act%a#i@ar#a:

    En este e'e*p#o> se está act%a#i@ando e# ape##ido de# e*p#eado con J +.

    )ariab#e con e# EntityManager cargado

    "#ase de #a Entidad a ser D%bicadaE)ita acer %n Dcast

    (#a)e pri*aria de #a Entidad

    e re%iere cargar #a entidad

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    19/179

    PROYECTO EMPRESARI AL ('

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    1.1.. Transacciones 

    E# nico *Gtodo %e p%ede estar ;%era de %na transacción es e# D;ind dado %e noca*bia atrib%tos de #as entidades.

    En %na ap#icación a)a tandone Aa)a EB> se debe in)ocar e# conte6totransacciona# de ;or*a e6p#cita> *ientras %e en %na ap#icación a)a EE> se as%*e%e e# container proporciona dico conte6to transacciona#.

    1.1.0. Ciclo de Vida de na Entidad

    P& proporciona %nos *Gtodos deno*inados Dca##bac8s A#istenersB para e'ec%taracciones en #os di;erentes estados %e p%eden s%ceder dentro de# cic#o de )ida de %naentidad. Por e'e*p#o> i*agine %e desea act%a#i@ar %na entidad> pero antes de acer#odebe )eri;icar %e a#g%nos datos estGn presentes.

    En e# grá;ico> se p%ede apreciar %e %na entidad no e6iste asta %e se distancia e#ob'eto y se graba en #a base de datos. e a> pasa a# estado D*ane'ado oDad*inistrado por e# EntityManager y> #%ego de e##o> se p%ede re*o)er> act%a#i@ar>

    #iberar ADdetacB o inc#%so )o#)er a #eer Are;rescarB.

    S e inicia una transacción

    S e inicia finaliza latransacción

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    20/179

    PROYECTO EMPRESARIAL 2+

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    (as anotaciones %e proporciona P& para *ane'ar #os D"a##bac8s son:

      QPost(oad: e e'ec%ta #%ego de %n Dre;res a #a entidad.  QPrePersist: e e'ec%ta antes de insertar #a entidad.  QPostPersist: e e'ec%ta desp%Gs de aber insertado #a entidad.  QPreUpdate: e e'ec%ta antes de %n %pdate a #a entidad.  QPostUpdate: e e'ec%ta desp%Gs de %n %pdate a #a entidad.  QPreRe*o)e: e e'ec%ta antes de e#i*inar #a entidad en #a base de datos.  QPostRe*o)e: e e'ec%ta desp%Gs de aber e#i*inado a #a entidad.

    (os *Gtodos Dca##bac8 se p%eden dec#arar dentro de #a *is*a entidad o ta*biGn en%na c#ase a)a separada.

    Por e'e*p#o> si de dec#aran dentro de #a *is*a entidad:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    21/179

    PROYECTO EMPRESARI AL 2(

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    En ca*bio> si se pre;iere e*p#ear %na c#ase a)a e6terna> sera as:

    aB & #a Entidad ay %e agregar#e #a anotación QEntity(isteners para indicar c%á#es #a c#ase a)a %e contiene #os *Gtodos Dca##bac8s.

    bB e debe crear %na c#ase a)a y escribir #os *Gtodos %e se re%iere *ane'arAcon #as anotaciones de# casoB.

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    22/179

    PROYECTO EMPRESARIAL 22

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    Res,-en 

    1. Recordar %e P& es %na especi;icación> por tanto> tiene *%casi*p#e*entaciones. E# desarro##ador debe se#eccionar %na en partic%#ar> siendo #as*ás conocidas: Open P&> !op(in8> Ec#ipse(in8 e ibernate.

    ". i;erenciar entre Entidades y "#ases a)a.

    '. Recordar #a %bicación de# arci)o persistence.6*# %e debe ir sie*pre dentro de#;o#der ME!&/N0.

    ). Recordar para %G sir)e e# EntityManager y #a persistence/%nit.

    . (as operaciones básicas sobre %na Entidad: ; ind> persist> *erge> re*o)e

    P%eden re)isar #os sig%ientes en#aces para a*p#iar #os conceptos )istos en esta%nidad:

    o Ec#ipse(in8: ttp:HH???.ec#ipse.orgHec#ipse#in8H'pa.ppo Entidades P&: ttp:HH???.agi#edata.orgHessaysH*appingOb'ects.t*# 

    http://www.eclipse.org/eclipselink/jpa.phphttp://www.eclipse.org/eclipselink/jpa.phphttp://www.agiledata.org/essays/mappingObjects.htmlhttp://www.agiledata.org/essays/mappingObjects.htmlhttp://www.agiledata.org/essays/mappingObjects.htmlhttp://www.agiledata.org/essays/mappingObjects.htmlhttp://www.eclipse.org/eclipselink/jpa.php

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    23/179

    PROYECTO EMPRESARI AL 23

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    1.". #R$%APPIN5 C#N JPA

    1.".1. Anotaciones

    (as anotaciones p%eden c#asi;icarse en dos gr%pos:  &notaciones #ógicas describen e# *ode#o de entidades desde e# p%nto de )ista

    de# *ode#a*iento orientado a ob'etos. "onstit%yen %na especie de *etadatade# *ode#o.

      &notaciones ;sicas están re#acionadas con e# *ode#o en #a base de datosA*ode#o ;sicoB y tienen %e )er con tab#as> co#%*nas> etc.

    (as anotaciones dentro de %na c#ase a)a se p%eden co#ocar a ni)e# de atrib%tos o ani)e# de *Gtodos. i se co#ocan a ni)e# de atrib%tos se deno*ina D0ie#d &ccess*ientras %e si se co#oca a ni)e# de *Gtodos se deno*ina DProperty &ccess.

    Es e%i)a#ente a:

    En #a especi;icación de P& 2.- se introd%ce #a anotación Q&ccess %e per*iteco*binar #os dos *odos presentados en e# e'e*p#o. Esta anotación per*ite sobreescribir e# *odo de acceso por de;ecto> a%n%e no es *%y %s%a# acer#o.

    Para de;inir %na entidad basta con e*p#ear #a anotación QEntity y #a anotación Qd.

     Anotación d e tipo 

    “F ield  Access”  

     Anotación d e tipo “P roperty   Access”  

    NOT  A: S iempre va en el GE TT ER

     Atributos d e l a c l ase 

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    24/179

    PROYECTO EMPRESARIAL 24

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    Anotaci!n Ta9le

    Por de;ecto no es necesario inc#%ir ning%na anotación para re;erenciar a %na tab#a.P& as%*e %e #a tab#a se ##a*a ig%a# %e #a c#ase a)a en donde se de;ine #a entidad.

    in e*bargo> si se desea especi;icar %n no*bre de tab#a en partic%#ar para asociar#ocon #a entidad> es preciso %ti#i@ar #a anotación Q!ab#e con e# pará*etro Dna*e

    respecti)o.

    e p%ede indicar ade*ás e# es%e*a de base de datos con e# atrib%to Dsce*a Aparaa%e##os *otores de base de datos %e #o soportenB:

    e debe tener c%idado con e# %so de *aysc%#as y *insc%#as> p%es *%cos*ane'adores de bases de datos no son sensib#es a esto.

    Anotaci!n Dasic

    "%ando se Dpersiste %na propiedad de %na entidad> e# Dpersistente pro)ider )eri;ica%e e# tipo de dato corresponda a %n tipo soportado y trata de pasar#o acia #a base dedatos )a e# dri)er ".

    (os tipos de datos soportados son:!ipos pri*iti)os byte> int> sort> #ong> boo#ean> car> ;#oat

    do%b#e"#ases %e encaps%#an a tipospri*iti)os

    yte> nteger> ort> (ong> oo#ean>"aracter> 0#oat> o%b#e

    &rreg#os de bytes y caracteres byteS> yteS> carS> "aracterSN*eros 'a)a.*at.ignteger> 'a)a.*at.igeci*a#"adenas de caracteres 'a)a.#ang.tring!ipos de datos %e *ane'an ;ecas 'a)a.%ti#.ate> 'a)a.%ti#."a#endar

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    25/179

    PROYECTO EMPRESARI AL 25

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    a)a!ipos de datos %e *ane'an ;eca"

     'a)a.s#.ate> 'a)a.s#.!i*e> 'a)a.s#.!i*esta*p

    !ipos en%*erados "%a#%ieraOb'etos seria#i@ab#es "%a#%iera

    e debe tener c%idado con e# co*porta*iento de# dri)er " c%ando #os tipos dedatos no coinciden entre #o %e se de;ine en #a entidad y #o %e soporta #a base dedatos> p%es e# dri)er intentará e'ec%tar #a *e'or con)ersión posib#e.

    (a anotación Qasic A%e es opciona#B se %ti#i@a para indicar de ;or*a e6p#cita %edico atrib%to debe ser a#*acenado en #a base de datos.

    Anotaci!n Transient

    e e*p#ea para *arcar a%e##os atrib%tos de #a entidad %e NO deben ser g%ardadosen #a base de datos.

    Anotaci!n Colmn

    Es %na anotación de tipo ;sico> p%es indica #as caractersticas ;sicas de #a co#%*naen #a base de datos.

    i no se especi;ica para %n atrib%to deter*inado *arcado co*o persistente> P&as%*e %e #a co#%*na se ##a*a ig%a# %e dico atrib%to. En ca*bio> si #a co#%*natiene %n no*bre di;erente> se deberá especi;icar con e# %so de #a anotación Q"o#%*n.

    (os e#e*entos %e aco*paCan a #a anotación Q"o#%*n son #os sig%ientes:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    26/179

    PROYECTO EMPRESARIAL 2#

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    Elemento >escripci!n Valor porde2ecto

    tringcolumnDefinition 

    AOpciona#BEs e# ;rag*ento de ( %ti#i@ado para generar e# ( de #aco#%*na Adepende de# *ane'ador de base de datosB

    D

    boo#eaninsertable 

    AOpciona#B ndica si #a co#%*na ser inc#%irá dentro de %nasentencia ( NER! generada por e# Persistence Pro)ider.

    tr%e

    int length  AOpciona#B ndica #a #ongit%d de #a co#%*na en #a tab#a y;%nciona nica*ente c%ando #a co#%*na es %n tring o cadenade caracteres.

    255

    tring name  AOpciona#B ndica e# no*bre de #a co#%*na. POr de;ecto seas%*e %e #a co#%*na se ##a*a ig%a# %e e# atrib%to de #aentidad.

    D

    boo#ean nullable  AOpciona#B ndica si #a co#%*na per*ite )a#ores n%#os. tr%eint precision  AOpciona#B ndica #a precisión para %na co#%*na n%*Grica

    A)á#ido so#o para co#%*nas deci*a#esB.-

    int scale  AOpciona#B ndica #a esca#a para %na co#%*na n%*Grica A)á#idoso#o para co#%*nas deci*a#esB.

    -

    tring table  AOpciona#B ndica e# no*bre de #a tab#a en donde se asocia# #a

    co#%*na.

    D

    boo#ean uniue  AOpciona#B e e*p#ea c%ando #a c#a)e nica corresponde a%na so#a co#%*na.

    ;a#se

    boo#eanupdatable 

    AOpciona#B ndica si #a co#%*na ser inc#%irá dentro de %nasentencia ( UP&!E generada por e# PersistencePro)ider.

    tr%e

    E'e*p#o 1:

    E'e*p#o 2:

    Anotaci!n -o9

    Para e# *ane'o de ob'etos binarios Ai*ágenes o arci)os genera#*enteB se re%ierenaccesos especia#es en e# dri)er " para e;ect%ar con)ersiones entre e# ob'eto a)a

    y #a co#%*na en #a tab#a de #a base de datos.

    (a anotación Q(ob sir)e para indicar %e e# atrib%to de dica entidad re%iere e;ect%ar#as con)ersiones )a ".

    &ora bien> #os ca*pos (O Aacróni*o de (arge Ob'ectB se p%eden c#asi;icar de dos*aneras> siendo e# *ane'o de cada *anera %n tanto di;erente:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    27/179

    PROYECTO EMPRESARI AL 2$

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    Si el o9jeto es El tipo ja+a a sar es "aracter (arge Ob'ets A C-#D B   carS

      "aracterS

      tring

    inary (arge Ob'ects A D-#D B   byteS

      yteS

      tipos seria#i@ab#es

    En a*bos casos> e# dri)er " es responsab#e de acer #as con)ersiones entre e#ob'eto a)a y #a base de datos.

    E'e*p#o:

    Anotaci!n Temporal

    ir)e para especi;icar tipos de datos basados en e# tie*po. Estos tipos de datos sep%eden c#asi;icar en dos ra*as: #os %e )ienen de# pa%ete 'a)a.s# y #os %e )ienende# pa%ete 'a)a.%ti#.

    En e# pa%ete ja+a.sFl> #os tipos se traba'an directa*ente:  'a)a.s#.ate

      'a)a.s#.!i*e

      'a)a.s#.!i*esta*p

    En ca*bio> en e# pa%ete ja+a.til:  'a)a.%ti#.ate

      'a)a.%ti#."a#endar

     Anotación 

    Tipo d e d ato 

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    28/179

    PROYECTO EMPRESARIAL 2&

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    e debe especi;icar #a anotación Q!e*pora# y ade*ás especi;icar e# atrib%toD!e*pora#!ype con %no de #os tres )a#ores %e representan a cada %no de #os tipos 'a)a.s# A&!E> !ME o !ME!&MPB.

    E'e*p#o:

    1.".". %anejo de la -la+e Primaria

    "ada Entidad debe tener %na ##a)e pri*aria. (a anotación e*p#eada es Qd sobre e#atrib%to %e contiene #a ##a)e. &diciona#*ente> se p%ede %sar Q"o#%*n para asociar a#atrib%to con #a co#%*na en #a tab#a.

    Una ##a)e pri*aria se as%*e %e es Dinsertabl e> pero no p%ede ser Dnull abl e oDu pd atabl e por #o %e se debe tener c%idado de no sobre escribir esos atrib%tos sa#)oe6cepciones *%y espec;icas Ac%ando se *ane'an re#acionesB.

    (os tipos de datos soportados para %na ##a)e pri*aria son:

    !ipos pri*iti)os byte> int> sort> #ong> car"#ases de tipos pri*iti)es yte> nteger> ort> (ong > "aracter"adenas de caracteres 'a)a.#ang.tringN*eros grandes 'a)a.*atc.ignteger!ipos basados en tie*po 'a)a.%ti#.ate> 'a)a.s#.ate

    1.".'. 5eneraci!n de la -la+e Primaria

    !a*biGn> se conoce co*o D,eneración de# y se rea#i@a *ediante #a anotaciónQ,enerated$a#%e. En base a dica anotación> e# DPersistence Pro)ider genera e# para cada entidad> y #o inserta en #a co#%*na respecti)a.

    e debe tener en c%enta %e dependiendo de #a estrategia de generación de# > e#)a#or obtenido p%ede %e no estG disponib#e asta %e se e'ec%te %n D;#%s o %nDco**it a #a transacción.

     Anotación 

    Equival encia JDBCTipo d e d ato  java.uti l .Date 

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    29/179

    PROYECTO EMPRESARI AL 2'

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    E6isten c%atro estrategias posib#es A%e son %n tipo en%*erado de D,eneration!ypeB:  &U!O

      !&(E

      EUEN"E

      EN!!T

    E!R&!E,& D,eneration!ype.&U!O

    Este tipo de estrategia de#ega en e# DPersistence Pro)ider #a se#ección de #a *e'or;or*a de generación de #os D. "%a#%iera sea #a ;or*a e#egida por e# pro)ider> secon;iará en #os rec%rsos de #a base de datos para #a obtención de #os Ks.

    En e# caso partic%#ar de Ec#ipse(in8 con My(> #a estrategia &U!O e*p#ea %na tab#adeno*inada Dse%ence.

    E'e*p#o:

    E!R&!E,& D,eneration!ype.!&(E

    Esta estrategia es #a *ás ;#e6ib#e y portab#e> p%es per*ite %e #a ap#icación genereKs di;erentes de ac%erdo a #as necesidades.

    (a tab#a re%iere de dos co#%*nas> %na conteniendo e# identi;icador para generar #asec%encia y #a otra co#%*na contiene e# #ti*o )a#or generado. "ada ;i#a de #a tab#a es%n generador di;erente para #os Ks.

    Un e'e*p#o senci##o es e# sig%iente:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    30/179

    PROYECTO EMPRESARIAL 3+

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    ado %e no se a especi;icado e# no*bre de %n Dgenerador ni e# no*bre de %natab#a> e# Persistence pro)ider se#eccionará s%s propios )a#ores. (o *ás co*n es %eb%s%e A#a tab#a debe e6istir en #a base de datosB %na tab#a co*o #a indicada en #a;ig%ra.

    %G s%cede si se desea especi;icar %na tab#a en partic%#arI e debe e*p#ear #aanotación Q!ab#e,enerator.

    E'e*p#o:

    E# atrib%to Da##ocationi@e indica e# incre*ento en #a generación de# Apara e# casode# e'e*p#o )a de %no en %noB. Por de;ecto e# incre*ento es 5-.

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    31/179

    PROYECTO EMPRESARI AL 3(

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    E!R&!E,& D,eneration!ype.EUEN"E

    Esta estrategia depende de #as capacidades de #a base de datos para *ane'ar ob'etosde tipo Dsec%encia Acaso de Orac#eB.

    ig%a# %e en #a estrategia !&(E> basta con escribir #a anotación para %e e#DPersistence Pro)ider se#eccione #a *e'or sec%encia dentro de #a base de datos.

    E'e*p#o:

    i se desea especi;icar %na sec%encia en partic%#ar> debe indicarse e# Dgenerator y #aanotación Qe%ence,enerator. e debe considerar %e #a sec%encia debe e6istirpre)ia*ente en #a base de datos Asa#)o %e #a opción de generación de ( estGabi#itada en n%estra ap#icaciónB.

    E'e*p#o A#a sec%encia es para Orac#eB:

    Estrategia

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    32/179

    PROYECTO EMPRESARIAL 32

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    E!R&!E,& D,eneration!ype.EN!!T

    Esta estrategia apro)eca #as ;aci#idades de #a bases de datos para %ti#i@ar co#%*nasde tipo Da%toincre*ento. in e*bargo> es *enos e;iciente por%e e# identi;icadorgenerado no está disponib#e asta desp%Gs %e oc%rra e# NER!.

    No re%iere %na anotación para e# Dgenerador dado %e e# ca*po a%toincre*enta# es

    parte de #a de;inición de #a tab#a %e corresponde a #a entidad.

    E'e*p#o:

    1.".). -la+e Primaria Compesta

    En a#g%nas sit%aciones> en donde se re%iere %e #a ##a)e pri*aria de %na entidad estGco*p%esta de *#tip#es atrib%tos> P& proporciona dos ;or*as de soportar estanecesidad *ediante #as anotaciones:

      Qd"#ass

      QE*beddedd

    e debe tener en c%enta %e:

    aB En a*bos casos> se re%iere de %na c#ase a)a e6terna %e sea #a %e *ane'e#os atrib%tos de #a ##a)e pri*aria.

    bB (a c#ase a)a %e *ane'a #os atrib%tos de #a ##a)e pri*aria> debe i*p#e*entar#os *Gtodos euals !"  y hashCode !" con e# ;in %e e# Persistence Managerp%eda a#*acenar e identi;icar #as entidades.

    cB (a c#ase a)a %e representa a #a ##a)e pri*aria debe ser pb#ica> i*p#e*entara #a inter;ace eria#i@ab#e y tener %n constr%ctor sin arg%*ento.

    E'e*p#o:

    ada #a sig%iente tab#a Dtb*atric%#a con %na ##a)e pri*aria co*p%esta.

    Estrategia

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    33/179

    PROYECTO EMPRESARI AL 33

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    (a Entidad y #a c#ase a)a %e *ane'a #a ##a)e pri*aria p%eden representarse as Anoo#)idar %e se debe generar #os *Gtodos getterHsetter en a*bas c#ases a)aB:

    Obser)e %e #a anotación Qd"#ass especi;ica e# no*bre de #a c#ase a)a %e *ane'a#a ##a)e pri*aria.

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    34/179

    PROYECTO EMPRESARIAL 34

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    Obser)e> ta*biGn> %e #a c#ase a)a %e *ane'a #a ##a)e pri*aria no poseeanotaciones. in e*bargo> debe i*p#e*entar #os *Gtodos no*brados #neas arriba:

    E# *Gtodo euals !"  #o %e ace es co*parar %no a %no #os atrib%tos de #a ##a)epri*aria contra #os atrib%tos de otra entidad para )eri;icar %e no se trate de #a *is*aentidad.

    E# *Gtodo hashCode !" #o %e ace es de)o#)er %n código Das de #os )a#ores de #a##a)e pri*aria.

    Para cons%#tar %na entidad con %na ##a)e pri*aria co*p%esta> so#o se re%iere generar%na instancia de #a c#ase %e *ane'a #a ##a)e pri*aria> cargar#e #os )a#ores necesariosy pasar dica )ariab#e a# EntityManager.

    E'e*p#o:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    35/179

    PROYECTO EMPRESARI AL 35

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    1.".. #9jetos Em9e9idos

    Un ob'eto e*bebido es a%e# %e es dependiente de %na entidad: no tiene identidadpor s *is*o. Entender este concepto es *%y ti# para e# *ane'o de re#aciones entreentidades.

    i bien> a ni)e# de a)a> #os ob'etos e*bebidos se ad*inistran de ;or*a separada> ani)e# de base de datos> #a entidad y #a c#ase e*bebida se a#*acenan sobre e# *is*oregistro de #a tab#a.

    Por e'e*p#o> en e# sig%iente grá;ico> se tiene #a entidad D"U!OMER y #a tab#aDtbc%sto*er. Obser)e %e #os datos de #a dirección p%eden constit%ir %na c#aseseparada:

    i se con)ierte #a dirección en %na c#ase DE*bebida> %edara as:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    36/179

    PROYECTO EMPRESARIAL 3#

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    e debe obser)ar %e:

    aB (a Entidad dec#ara %n atrib%to con e# tipo de dato de #a c#ase D&ddress y a esteatrib%to #e co#oca #a anotación DQE*bedded para indicar %e esa c#ase esDe*bebida.

    bB (a c#ase D&ddress NO tiene anotaciones %e indi%en %e es %na entidad.Vnica*ente tiene #a anotación DQE*beddab#e para indicar %e ay Dotrac#ase %e #a inc#%ye Ao %e #a re;erenciaB.

    cB &*bas c#ases tienen s%s getterHsetter.dB &*bas c#ases deben de;inirse en e# arci)o persistente.xml .

    eB 0ina#*ente> es i*portante saber %e so#o se p%ede e'ec%tar series sobre #ac#ase *arcada co*o DEntidad.

     Anotación 

    @E mbedd ed

     Anotación 

    @E mbedd abl e 

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    37/179

    PROYECTO EMPRESARI AL 3$

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    Res,-en 

    1. Una c#ase a)a se con)ierte en Entidad a# agregar #a anotación QEntity. &de*ás>e6isten otras anotaciones %e per*iten e# *apeo contra co#%*nas de #a tab#a en#a base de datos.

    ". E6isten c%atro *aneras de generar #a sec%encias para Ks:  &U!O  !&(E  EUEN"E  EN!!T

    '. Recordar e# %so de #a anotación Q!e*pora# para tipos de datos %e *ane'antie*po.

    P%eden re)isar #os sig%ientes en#aces para a*p#iar #os conceptos )istos en esta%nidad:

    o &notaciones: ttp:HH???.ob'ectdb.co*HapiH'a)aH'paHannotationsHor* 

    http://www.objectdb.com/api/java/jpa/annotations/ormhttp://www.objectdb.com/api/java/jpa/annotations/ormhttp://www.objectdb.com/api/java/jpa/annotations/ormhttp://www.objectdb.com/api/java/jpa/annotations/orm

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    38/179

    PROYECTO EMPRESARIAL 3&

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    1.'. RE-ACI#NES ENTRE ENTI>A>ES 

    1.'.1. Conceptos 9Bsicos

    Ro#es

    (as re#aciones entre entidades tienen tres di;erentes perspecti)as:

    aB (a pri*era es e# p%nto de )ista desde %n #ado de #a re#ación.

    bB (a seg%nda en e# p%nto de )ista desde e# otro #ado de #a re#ación.

    cB (a tercera es #a perspecti)a g#oba# %e *ira a*bos #ados de #a re#ación.

    Estos D#ados son conocidos co*o Dro#es. !a# es as %e en cada re#ación ay dosentidades %e se re#acionan *%t%a*ente de ta# *anera %e cada %na c%*p#e %n ro#dentro de #a re#ación. Es *ás> %na entidad p%ede '%gar *%cos ro#es dentro de %n*ode#o.

    irecciona#idad

    E6isten *aneras de crear> re*o)er y act%a#i@ar #as re#aciones para dar#es*anteni*iento. i %na entidad tiene re#ación con otra> e6istirá %n atrib%to %e sir)epara identi;icar #a re#ación y re;erirse a #a entidad re#acionada identi;icando as e# ro#%e '%ega en #a re#ación.

    "%ando #as entidades se re;erencian *%t%a*ente se dice %e #a re#ación es bi/direcciona#. E'e*p#o: E# e*p#eado sabe en %G Proyecto traba'a y e# Proyecto conoce%iGnes son s%s *ie*bros A#as ;#ecas indican e# sentido de #a direcciónB.

    i %na entidad ap%nta nica*ente a otra> #a re#ación es %nidirecciona#. E# e*p#eadoconoce s% irección> pero #a in)ersa no necesaria*ente es cierta A#a ;#eca indica e#sentido de #a re#aciónB.

    &ora bien> #a re#ación i/direcciona# p%ede ser desco*p%esta en dos re#aciones %ni/direcciona#es. "ada re#ación tendrá %n origen ADso%rce o ro# de re;erenciaB y %ndestino ADtarget o ro# re;eridoB. e debe tener en c%enta esto> p%es e# origen y destino)aran segn #a perspecti)a %e este*os %sando para ana#i@ar #a re#ación.

    "ardina#idad

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    39/179

    PROYECTO EMPRESARI AL 3'

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    (a cardina#idad de %na re#ación sir)e para deter*inar c%ántas instancias de %naentidad e6isten en cada #ado de %na *is*a re#ación.

    "ada ro# dentro de #a re#ación tendrá s% propia cardina#idad> #a c%a# indicará c%andoe6ista %na so#a o *%cas instancias.

    Por e'e*p#o> *%cos e*p#eados p%eden traba'ar en e# *is*o departa*ento Ase*%estra %na re#ación de *%cos a %noB:

    Ordina#idad

    Un ro# p%ede especi;icarse de ;or*a *ás deta##ada para indicar si p%ede o no estarpresente en %na re#ación. (a ordina#idad sir)e para indicar si #a entidad Dtargetnecesita ser  especificad a c uand o l a enti d ad “ source”  es cread a. 

    ebido a %e #a ordina#idad es %n )a#or #ógico A)erdadero o ;a#soB es *ás prácticore;erirse a e##a co*o Dopcional i d ad  de #a re#ación.

    Mapeo de Re#aciones

    E6isten básica*ente dos ;or*as de asociación:

      (as basadas en )a#ores si*p#es.

      (as basadas en co#ecciones de )a#ores.

    entro de esas ;or*as de asociación> e6isten c%atro ;or*as de D*apeo:

      Re#ación One/!o/One A)a#ores si*p#esB

      Re#ación Many/!o/One A)a#ores si*p#esB

      Re#ación One/!o/Many Aco#ecciones de )a#oresB

      Re#ación Many/!o/Many Aco#ecciones de )a#oresB

    & ni)e# de ase de atos> #a re#ación entre entidades signi;ica %e %na tab#a re;erenciaa otra tab#a: aparece e# concepto de D0oreign Wey para indicar a%e##os ca*pos de%na tab#a %e acen re;erencia a #a DPri*ary Wey de otra tab#a.

    & ni)e# de P& #as co#%*nas %e ;or*an #a D0oreign Wey se conocen co*o Doin"o#%*ns y e*p#ean #a anotación Qoin"o#%*n para indicar dica ;%nciona#idad.

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    40/179

    PROYECTO EMPRESARIAL 4+

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    1.'.". Relaci!n %any To #ne

    Es #a re#ación *ás tpica %e pode*os encontrar en e# *%ndo rea#.

    En UM( se re%iere %e #a c#ase Dso%rce tenga %n atrib%to de# tipo de #a c#asetarget

    para poder na)egar acia e##a.E'e*p#o: i )arios E*p#eados p%eden traba'ar en %n eparta*ento> #a re#ación deentidades se p%ede *ode#ar co*o se *%estra a contin%ación:

    !enga en c%enta %e:

    aB (a c#ase Dso%rce tienen %n atrib%to %e corresponde a# tipo de #a c#ase DtargetAobser)e e# atrib%to Ddeparta*entoB.

    bB & dico atrib%to se #e debe co#ocar #a anotación QMany!oOne.

    &ora ;a#ta ##e)ar #a re#ación a# *ode#o de base de datos sig%iente:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    41/179

    PROYECTO EMPRESARI AL 4(

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    (as tab#as ;sicas están re#acionadas *ediante #a co#%*na DP!O en #a tab#aDtbe*p#eado %e ap%nta a #a co#%*na DEP! en #a tab#a Dtbdeparta*ento.Entonces> #a Doin "o#%*n de #a re#ación es #a co#%*na DP!O.

    E# #ado %e tiene a #a Doin "o#%*n se conoce co*o e# DOFNER E de #a re#ación>*ientras %e e# #ado %e no tiene a #a Doin "o#%*n se conoce co*o DN$EREE.

    En este e'e*p#o> e# #ado OFNER es #a tab#a Dtbe*p#eado y e# #ado N$ERO es #atab#a Dtbdeparta*ento.

    (a anotación Qoin"o#%*n sie*pre se debe co#ocar en e# #ado DOFNER de #are#ación.

    (a entidad DE*p#oyee debe %edar as Aobser)e #a anotación Qoin"o#%*nB:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    42/179

    PROYECTO EMPRESARIAL 42

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    i no se co#oca #a anotación Qoin"o#%*n> P& as%*e e# no*bre por de;ecto> e# c%a#está ;or*ado por e# no*bre de# atrib%to en #a entidad o?ner seg%ido de %n g%ión ba'oADB y concatenado con e# no*bre de #a co#%*na PW en #a tab#a in)ersa.

    1.'.'. Relaci!n #ne to #ne

    (a re#ación DUno a Uno es casi ig%a# a #a re#ación DM%cos a Uno con #a so#ae6cepción %e %na instancia de #a entidad Dso%rce p%ede ap%ntar a %na nicainstancia de #a entidad Dtarget. Estricta*ente ab#ando> eso signi;ica %e #a entidadDtarget no p%ede ser co*partida por otras instancias de #a entidad Dso%rce.

    & ni)e# de base de datos esta re#ación i*p#ica %n criterio de D%nicidad o ##a)e nica en

    #a D0oreign Wey de #a entidad Dso%rce.

    Ob)ia*ente se re%iere de;inir #a re#ación en #a Entidad DE*p#oyee: para e##o se ace%so de #a anotación QOne!oOne y ta*biGn se re%iere %sar Qoin"o#%*n Aen estecaso> #a co#%*na de oin es DP&RWN,B. (a entidad DE*p#oyee %edará as:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    43/179

    PROYECTO EMPRESARI AL 43

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    1.'.). Didireccionalidad de la relaci!n #ne$To$#ne

    En a#g%nas sit%aciones se re%iere considerar #a re#ación in)ersa entre #as entidades>ta*biGn conocida co*o bidirecciona#idad de #a re#ación. (a decisión es %n criterio de*ode#a*iento> *ás no %na ob#igación a ni)e# de progra*ación.

    Para #ograr esto> se re%iere %e #a entidad Dtarget tenga %n atrib%to de #a c#asecorrespondiente a #a entidad Dso%rce. ico atrib%to debe tener #a anotaciónQOne!oOne con e# e#e*ento D*appedy %e indi%e c%a# es e# atrib%to de #a c#aseDso%rce %e contiene #a re#ación y ap%nta a #a entidad Dtarget.

    E'e*p#o: en e# caso de #a entidad DPar8ingpace ADes e# Dtarget de #a re#aciónB setendra e# sig%iente atrib%to:

    T en e# caso de #a entidad DE*p#oyee A%e es e# Do?ner de #a re#aciónB tendra*os:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    44/179

    PROYECTO EMPRESARIAL 44

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    ebe tenerse en c%enta dos reg#as:

    aB (a anotación Qoin"o#%*n se co#oca en #a entidad %e *apea a #a tab#a %econtiene #a co#%*na de 'oin Ao a #a entidad %e es Do?ner de #a re#aciónB.

    bB E# e#e*ento D*appedy debe co#ocarse a #a anotación QOne!oOne de #aentidad Din)ersa o Dtarget de #a re#ación.

    1.'.. Relaci!n #ne To %any

    "%ando %na entidad se asocia con %na Dco#ección de otras entidades esta*os ante%na re#ación de D%no a *%cos.

    En e# e'e*p#o de# E*p#eado )s. E# eparta*ento> #a re#ación es bidirecciona# pornat%ra#e@a. En %na re#ación bidirecciona#> sie*pre e6isten dos D*apeos: %no por cadare#ación.

    & ni)e# de base de datos> #as tab#as sig%en siendo #as *is*as.

    T a ni)e# de entidades> #a entidad DE*p#oyee es #a *is*a.

    "o*o se tiene %e i*p#e*entar e# #ado in)erso de #a re#ación entre E*p#eado yeparta*ento> se debe *odi;icar #a entidad Depart*ent para agregar #a re#aciónin)ersa DOne/!o/Many: se debe D*apear %na co#ección de entidades DE*p#eado%sando #a anotación QOne!oMany.

    &diciona#*ente> co*o este es e# #ado in)erso de #a re#ación> se debe %sar e# atrib%toDmappedDy para indicar c%á# es e# atrib%to dentro de #a entidad DE*p#oyee %e

    contiene #a ##a)e de #a re#ación:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    45/179

    PROYECTO EMPRESARI AL 45

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    N#TA: En este caso se está %sando %na co#ección indicado e# tipo de #os e#e*entos%e a#*acena dica co#ección: CollectionGTypeH. Esto genera %na dependencia a#

    co*pi#ar por #o %e no es reco*endab#e.

    (a otra ;or*a de co#ocar #a re#ación es especi;icando e# atrib%to Dtar&etEntity sinespeci;icar e# tipo de dato contenido en #a co#ección:

    Es%e*ática*ente #as dos re#aciones se )en as:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    46/179

    PROYECTO EMPRESARIAL 4#

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    Es i*portante tener en c%enta %e:

    aB E# #ado D*any/to/one sie*pre es e# #ado Do?ner de #a re#ación. Enconsec%encia> #a anotación Qoin"o#%*n debe estar en dico #ado.

    bB E# #ado Done/to/*any es e# #ado Din)erso> por #o %e e# e#e*ento D*appedydebe ser %ti#i@ado en este #ado.

    cB i no se especi;ica e# D*appedy> P& considera %e es %na re#ación%nidirecciona# de tipo one/to/*any por #o %e re%iere e# %so de %na tab#a de

    oin. !ener en c%enta %e esto p%ede ocasionar errores a# desarro##arap#icaciones.

    1.'.. Relaci!n %any To %any

    "%ando %na o *ás entidades se asocian con %na Dco#ección de otras entidades ydicas entidades tienen re#aciones sobrep%estas con #as *is*as entidades Dtarget> sedice %e esta*os ;rente a %na re#ación de tipo DM%co/a/M%cos.

    Por e'e*p#o: Un DE*p#eado p%eden traba'ar en *#tip#es DProyectos y cadaDProyecto p%ede tener a *%cos DE*p#eados.

    e #os e'e*p#os anteriores pode*os *ane'ar #as sig%ientes entidades:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    47/179

    PROYECTO EMPRESARI AL 4$

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    (a re#ación DM%cos/a/M%cos se p%ede e6presar en #as dos entidades ADso%rce yDtargetB %ti#i@ando #a anotación QMany!oMany. !eniendo en c%enta %e:

    aB "%ando #a re#ación DMany/!o/Many es bidirecciona#> a*bos #ados de #are#ación deben tener #a anotación QMany!oMany.

    bB No e6isten co#%*nas de 'oin en cada #ado de #a re#ación: #a nica ;or*a dei*p#e*entar esta re#ación es %ti#i@ando %na tab#a de 'oin> por #o %e no e6iste*anera de deter*inar "U&( es e# #ado Do?ner de #a re#ación> enconsec%encia> se debe as%*ir %e %no de #os #ados es e# Do?ner.

    cB ig%a# %e en #as re#aciones bidirecciona#es anterior*ente tratadas> e# #ado%e no sea Do?ner debe %ti#i@ar e# D*appedy> en caso se o*ita estee#e*ento> P& ded%cirá %e se trata de dos re#aciones %nidirecciona#esseparadas.

    En e# e'e*p#o> #a anotación QMany!oMany debe co#ocarse en a*bas entidades:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    48/179

    PROYECTO EMPRESARIAL 4&

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    E# *ode#o de base de datos es:

    & ni)e# de base de datos> %na Doin !ab#e consiste si*p#e*ente de dos D0oreign Weyo co#%*nas de 'oin %e re;erencian Acada %naB a %n #ado de #a re#ación.

    (a anotación Qoin!ab#e se %sa para con;ig%rar #a tab#a de 'oin de #a re#ación:

    aB "ada co#%*na de oin se disting%e dependiendo de# pape# dentro de #are#ación: #ado o?ner o #ado in)erso.

    bB (a co#%*na de oin %e pertenece a# #ado Do?ner se describe %sando e#e#e*ento D joinColmns.

    cB (a co#%*na de oin %e pertenece a# #ado Din)erse se describe %sando e#e#e*ento Din+erseJoinColmns.

    En e# e'e*p#o> ;a#ta indicar #a oin!ab#e de #a sig%iente ;or*a Aas%*iendo %eE*p#oyee es e# o?ner de #a re#aciónB.

    !enga en c%enta %e e# e#e*ento Dname dentro de Qoin"o#%*n especi;ica e#no*bre de #a co#%*na en #a tab#a de oin> *ientras %e e# e#e*ento

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    49/179

    PROYECTO EMPRESARI AL 4'

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    Dre;erenced"o#%*nNa*e indica #a co#%*na %e es DPri*ary Wey en #a tab#a %e seenc%entra a# e6tre*o de #a re#ación Asea o?ner o in)ersaB.

    T en e# #ado in)erso de #a re#ación se pone e# e#e*ento D*appedy:

    1.'.0. #pciones de /etc*

    (as entidades y s%s atrib%tos p%eden ser cargados de dos ;or*as:

      (&XT: "%ando se cargan de ;or*a Dpere@osa> es decir> se cargan en e#*o*ento en %e se re%ieren.

      E&,ER: "%ando se cargan de ;or*a Dproacti)a> es decir> a# *o*ento de

    cargar #a entidad Do?ner de #a re#ación.En tGr*inos de P&> se %sa e# e#e*ento D2etc* aco*paCando a #a anotación de #are#ación e indicando e# )a#or de /etc*Type.-A? o /etc*Type.EA5ER.

    En %na re#ación de )a#ores si*p#es e# 0etc!ype por de;ecto es E&,ER.

    En %na re#ación de co#ecciones de )a#ores> e# 0etc!ype por de;ecto es (&XT.

    En %na re#ación bidirecciona#> e# 0etc!ype p%ede ser E&,ER en %n sentido y (&XTen e# otro dependiendo de# tipo de na)egación %e se desea.

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    50/179

    PROYECTO EMPRESARIAL 5+

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    Res,-en 

    1. Recordar %e en P&> e6isten c%atro tipos de re#aciones entre entidades:

      One !o One

      One !o Many

      Many !o One

      Many !o Many

    P%eden re)isar #os sig%ientes en#aces para a*p#iar #os conceptos )istos en esta%nidad:

    o P&: ttp:HH???.'a)a?or#d.co*H'a)a?or#dH'?/-1/2--+H'?/-1/'pa2.t*# 

    http://www.javaworld.com/javaworld/jw-01-2008/jw-01-jpa2.htmlhttp://www.javaworld.com/javaworld/jw-01-2008/jw-01-jpa2.htmlhttp://www.javaworld.com/javaworld/jw-01-2008/jw-01-jpa2.htmlhttp://www.javaworld.com/javaworld/jw-01-2008/jw-01-jpa2.html

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    51/179

    PROYECTO EMPRESARI AL 5(

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    1.). TE JAVA PERSISTENCE ,UER -AN5UA5E

    P& soporta dos ;or*as para e6presar cons%#tas %e rec%peran entidades desde %nabase de datos:

      E# #eng%a'e de cons%#tas A%eriesB> conocido co*o a)a Persistence %ery

    #ang%age AP(B> es %n #eng%a'e independiente de# *ane'ador de base dedatos %e traba'a con entidades en #%gar de %sar tab#as.

      (a &P de criterios> %e sir)e para constr%ir cons%#tas basadas en ob'etos a)aen #%gar de escribir #os %eries en strings.

    1.).1. Introdcci!n a JP,-

    (os antecedentes de P( se p%eden encontrar en #a especi;icación de E 2.- con e##eng%a'e E/( en e# c%a# se introd%'o %na ;or*a de na)egar entre #os eans y s%s

    re#aciones> as co*o ;i#tros y ;%nciones agregadas.

    (os %eries operan dentro de %na %nidad de persistencia y pertenecen a %na de #assig%ientes c#asi;icaciones:

    aB SE-ECT> son %eries %e rec%peran %na o *ás entidades> ;i#trando #osres%#tados si ;%era necesario.

    bB A55RE5ATE> #os %eries de este tipo son )ariaciones de #os %eries de# tipoE(E"!> con #a sa#)edad %e agr%pan res%#tados para prod%cir in;or*acións%*ari@ada Ade a #a necesidad de %sar #a c#á%s%#a ,ROUP TB.

    cB UP>ATE> son %eries %e se e*p#ean para act%a#i@ar %n con'%nto deentidades.

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    52/179

    PROYECTO EMPRESARIAL 52

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    dB >E-ETE> son %eries %e se %ti#i@an para re*o)er %n con'%nto de entidades.

    %ti#i@ar #os %eries se debe considerar %e #as entidades son re;erenciadas por s%no*bre. i %na entidad no tiene asignado %n no*bre de ;or*a e6p#cita> P& as%*e e#no*bre de #a c#ase co*o no*bre por de;ecto: este no*bre se conoce co*o Dabstractsce*a na*e de #a entidad dentro de# conte6to de# %ery.

    !a*biGn> es i*portante resa#tar %e para #os %eries es indi;erente e# %so de

    *aysc%#as y *insc%#as sa#)o en dos casos: no*bre de entidades y no*bres deatrib%tos de cada entidad.

    ada %na entidad co*o #a sig%iente Aentidad DE*p#oyeeB:

    E# %ery *ás senci##o %e se p%eden e'ec%tar es e# sig%iente:

    Obser)e %e #a notación es *%y si*i#ar a# ( nor*a#> pero con #igeras di;erencias:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    53/179

    PROYECTO EMPRESARI AL 53

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    aB En P(> #o %e sig%e a #a c#á%s%#a D0ROM es e# no*bre de #a entidad> esdecir> no se co#oca e# no*bre de #a tab#a Arecordar %e #a Entidad D*apea a%na tab#aB.

    bB En P(> es ob#igatorio %e #as entidades sean Dca#i;icadas con %n Da#ias: ene# caso de# e'e*p#o> e# a#ias es De. Este Da#ias se conoce co*o D)ariab#e de

    identi;icación.

    cB E# a#ias indicará %e e# res%#tado será %no o *ás entidades de# tipocorrespondiente a #a entidad.

    dB E# tipo de res%#tado de %n %ery no p%ede ser %na "o#ección. ebe ser %n tiposi*p#e o %na Entidad.

    & partir de# %so de# Da#ias para #a entidad> se p%ede %ti#i@ar #a notación Ddot Ae# p%ntoD.B para re;erenciar ca*pos persistentes de #a entidad. Por e'e*p#o> si %ere*osse#eccionar nica*ente #os no*bres de #os e*p#eados sera as:

    En este caso> co*o e# ca*po Dno*bre es %n tring> e# res%#tado de# %ery de)o#)erá%no o *ás trings. e #a *is*a ;or*a p%ede traba'arse para c%a#%ier otro atrib%to>sea %na #ista> co#ección o ca*pos si*p#es.

    E# se#eccionar a#g%nos ca*pos de #a entidad Aa# ig%a# %e en (B recibe e# no*bre deD proyección. e debe tener en c%enta s% %so si es %e se )an a descartar Ano %sarB)arios atrib%tos de #a entidad a# *o*ento de generar reportes Adada #a sobrecarga %ese genera en e# ;ra*e?or8 P&B.

    En e# sig%iente e'e*p#o> se p%ede se#eccionar %na entidad %e no está en #a c#á%s%#a0ROM:

    Obser)e %e Ddeparta*ento es %na ca*po de #a entidad DE*p#oyee> pero a #a )e@ es%na Entidad Adada #a re#ación estab#ecida QMany!oOneB. Por tanto> e# res%#tado deese %ery será %na entidad Depart*ent obtenida a partir de #a re#ación.

    0(!RO

    ig%a# %e en (> se p%ede ;i#trar #os res%#tados a obtener %ti#i@ando #a c#á%s%#aFERE y #a notación Ddot.

    P( inc#%ye operadores co*o N> (WE y E!FEEN> ;%nciones co*o U!RN, y(EN,! ade*ás de soportar s%b%eries.

    E'e*p#o:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    54/179

    PROYECTO EMPRESARIAL 54

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    En este e'e*p#o> e# ;i#tro #o constit%ye e# atrib%to Dno*bre de #a entidad Depart*ent%e está )inc%#ada con #a entidad DE*p#oyee.

    ON EN!RE EN!&E

    ig%a# %e en (> si se desea na)egar entre #as re#aciones de #as entidades yretornar e#e*entos de #a co#ección> se debe e'ec%tar %n ON entre entidades.

    e p%ede e'ec%tar e# ON a# *ás p%ro esti#o de# tradiciona# ( indicando #os criteriosde ON en #a c#á%s%#a FERE.

    in e*bargo> P( proporciona #a ;aci#idad de especi;icar e# ON dentro de #ac#á%s%#a 0ROM con #a ;ina#idad de e6presar e# ON en tGr*inos de #a re#acióne6istente entre #as entidades: P& se encargará de ar*ar #a sentencia (e%i)a#ente.

    Un ON oc%rre si se c%*p#e c%a#%iera de #as sig%ientes condiciones en e# E(E"!:

    1B os o *ás dec#araciones de )ariab#es son #istadas en #a c#á%s%#a 0ROM yaparecen en #a c#á%s%#a E(E"!.

    2B E# operador ON es e*p#eado para e6tender a %na )ariab#e de identi;icación%sando De6pression pat.

    3B Un Dpat e6pression en c%a#%ier parte de# %ery na)ega a tra)Gs de %n ca*po

    de asociación en #a *is*a o en otra entidad.

    4B Una o *ás condiciones FERE co*paran atrib%tos de )ariab#es deidenti;icación di;erentes.

    e debe tener en c%enta %e ante #a a%sencia de condiciones de ON entreentidades> se generará %n prod%cto cartesiano entre #a pri*era entidad y cadaoc%rrencia de #a seg%nda entidad.

    NNER ON

    Un Dinner 'oin entre dos entidades se p%ede especi;icar de c%a#%iera de #a *anerasindicadas anterior*ente. in e*bargo> #a ;or*a pre;erida es *ediante e# %so de#operador ON en #a c#á%s%#a 0ROM.

    (a sinta6is básica es:

    [INNER] JOIN pat!"expressi#n$ [A%] identi&ier$ 

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    55/179

    PROYECTO EMPRESARI AL 55

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    E'e*p#o 1: se as%*e %e Dpones contiene %na re#ación P& entre DE*p#oyee yDPone

    E'e*p#o 2: *#tip#es oins A#os 'oins se interpretan de i@%ierda a dereca desde e#0ROMB

    #UTER J#IN

    Un Do%tter 'oin entre dos entidades prod%ce %n á*bito en e# c%a# so#o %n #ado de #are#ación es re%erido para co*p#etar e# res%#tado. Por e'e*p#o> %n o%ter 'oin entreDE*p#eado y Departa*ento *ostrará todos #os e*p#eados y #os departa*entos a #os%e an sido asignados> pero con #a sa#)edad %e e# Departa*ento será retornadonica*ente si e6iste dentro de #a re#ación Aa di;erencia de %n inner 'oinB.

    % sinta6is es #a sig%iente:

    LEFT [O'TER] JOIN pat!"expressi#n$ [A%] identi&ier$

    E'e*p#o 1:

    /ETC J#IN

    Este tipo de oin sir)e para ay%dar a #os progra*adores a opti*i@ar #os accesos a #abase de datos. Per*ite %e #os %eries especi;i%en %na o *ás re#aciones %e debenser na)egadas y pre/cargadas por e# *ecanis*o de rec%peración de datos de ta#

    ;or*a %e no se e'ec%ten D#a@y #oad en tie*po de e'ec%ción. En otras pa#abras>red%ce #a cantidad de accesos a #a base de datos.

    E'e*p#o:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    56/179

    PROYECTO EMPRESARIAL 5#

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    UERE &,RE,&O

    (a sinta6is es *%y si*i#ar a (: se re%iere e# %so de# agr%pa*iento con 5R#UP D 

    Es opciona# e# %so de# ; i#tro *ediante #a c#á%s%#a AVIN5.

    P& inc#%ye cinco ;%nciones agregadas:

      AV5: Pro*edio arit*Gtico.

      C#UNT: "antidad de repeticiones.

      %IN: Menor )a#or.

      %AK: Mayor )a#or.

      SU%: %*a de )a#ores

    E'e*p#o:

    En este e'e*p#o se obtienen todos #os departa*entos> #a cantidad de e*p#eados decada departa*ento> e# s%e#do *á6i*o y e# s%e#do pro*edio teniendo en consideraciónso#o a%e##os departa*entos %e tengan *ás de 5 e*p#eados.

    UERE

    E6isten dos ;or*as para de;inir D%eries en P/(:

      (a pri*era ;or*a es de;inir#o diná*ica*ente en tie*po de e'ec%ción co*o %nacadena de caracteres %e se constr%ye de ac%erdo a# ;#%'o de #a ap#icación.Esto i*p#ica co*pi#ar e# D%ery cada )e@.

      (a seg%nda ;or*a es de;inir e# D%ery )a anotación o #os D%eries no*brados son estáticos> pero son *%co *áse;icientes para ser e'ec%tados.

    1.).". Consltas dinBmicas

    Un %ery se p%ede de;inir de ;or*a diná*ica si*p#e*ente pasando %na cadena decaracteres con #a sentencia P( a# *Gtodo create%ery AB de# EntityManager.

    &ora bien> se p%ede indicar e# res%#tado esperado o se p%ede o*itir y de esta ;or*atendre*os %n %ery sin tipo de;inido AD%n!yped %eryB.

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    57/179

    PROYECTO EMPRESARI AL 5$

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    Para a%e##as ap#icaciones %e %ti#i@an *%cos %eries> se debe considerar e# costode Dco*pi#ar #a sentencia P(:

    1B e e'ec%ta %n Dparse de #a cadena P( en %n árbo# de sinta6is para )eri;icar%e estG correcta*ente escrito.

    2B Para cada entidad dentro de #a e6presión se obtiene #a *etadata.

    3B e genera #a sentencia ( e%i)a#ente.

    e debe tener en consideración Aa# ig%a# %e en "B #as i*p#icancias de concatenar%n %ery y #%ego pasar#o a# EntityManager para e)itar #a inyección de código (*a#icioso. Por e##o es pre;erib#e %sar pará*etros. !a*biGn> para a%e##os %eriese*p#eados con *ayor ;rec%encia> es pre;erib#e %sar #os %eries no*bradosANa*ed%eriesB.

    Un e'e*p#o con Type,ery:

    Un e'e*p#o con ,ery:

    La sentencia JP-QL TypedQuery  

    Cl ase que retorna el query  

    La c l ase Or d er.java tiene un métod o 

    toS tring() 

    La sentencia JP-QL 

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    58/179

    PROYECTO EMPRESARIAL 5&

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    1.).'. Consltas nom9radas

    Este tipo de %ery sir)e para organi@ar y *e'orar e# dese*peCo de %na ap#icación.

    e de;ine e*p#eado #a anotación QNa*ed%ery> #a c%a# se co#oca dentro de #ade;inición de %na Entidad: #a anotación de;ine no so#a*ente e# no*bre de# %ery sinota*biGn #a sentencia P( en s.

    e reco*ienda escribir #os %eries de *anera ordenada de ta# ;or*a %e ay%den a #a)isibi#idad y #ect%ra de #os *is*os dentro de #a de;inición de #a entidad.

    E# no*bre de# %ery Aatrib%to Dna*eB debe ser nico dentro de toda #a %nidad depersistencia. i se ace caso o*iso a esta restricción> #os res%#tados p%eden ser

    i*pre)isib#es en tie*po de e'ec%ción.

    e p%ede de;inir *#tip#es %eries no*brados e*p#eando #a anotaciónQNa*ed%eries> #a c%a# es %n arreg#o %e acepta )arias anotacionesQNa*ed%ery.

    E'e*p#o: E# *is*o %ery de# e'e*p#o anterior> pero aora de;inido en #a c#aseOrder.'a)a

    e in)oca as:

    La c l ase Or d er.java tiene un métod o 

    toS tring() 

    Query  

    Query  JPQL 

    N ombre d el Query  

    S e especifica ue es “ N amed#uery”

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    59/179

    PROYECTO EMPRESARI AL 5'

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    i desea*os de;inir )arios Na*ed%eries en #a entidad> se tendra %e acer as:

    T se p%ede in)ocar as:

    S e especifica el nombre del #uery

    #uery $%#& '(

    #uery $%#& ')

    Anotaci!n

    S e especifica el nombre d el Query  

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    60/179

    PROYECTO EMPRESARIAL #+

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    1.).). Uso de parBmetros(os pará*etros en)iados a %n D%ery per*iten #a re%ti#i@ación de sentencias de ;or*ata# %e #as cons%#tas e'ec%tadas con di;erentes pará*etros en cada in)ocación>retornen di;erentes res%#tados. Es pre;erib#e en)iar pará*etros a #as cons%#tas en #%garde estar constr%yendo %na n%e)a cadena de caracteres por cada in)ocación> p%es asse e)ita co*pi#ar repetidas )eces #os D%eries.

    P&RYME!RO NOMR&O

    e %ti#i@an c%ando dentro de #a sentencia P(> #os pará*etros )an precedidos por e#s*bo#o de D: seg%ido de# no*bre de# pará*etro.

    *o*ento de e'ec%tar e# %ery> e# progra*ador debe especi;icar e# no*bre de#pará*etro Ae*p#eando e# *Gtodo setPara*eterB y e# )a#or a ser cargado pararee*p#a@ar#o dentro de #a sentencia P(.

    (os pará*etros no*brados proporcionan c#aridad a# código de #a sentencia P(Ac%ando se %ti#i@an no*bres adec%adosB> por #o %e son pre;eridos respecto a #ospará*etros ordina#es.

    E'e*p#o %sando pará*etros no*brados:

    P&RYME!RO ORN&(E

    e %ti#i@an c%ando dentro de #a sentencia P(> #os pará*etros )an precedidos por e#s*bo#o de DI seg%ido de# n*ero de# pará*etro.

    *o*ento de e'ec%tar e# %ery> e# progra*ador debe especi;icar e# n*ero de#pará*etro y e# )a#or a ser cargado para ree*p#a@ar#o dentro de #a sentencia P(.

    E'e*p#o con pará*etros ordina#es:

    &a sentencia $%*#&

    Colocando los +alores

    N ote el uso de “named parameters”

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    61/179

    PROYECTO EMPRESARI AL #(

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    1.).. Ejecci!n de ,eries

    P& proporciona tres ;or*as de e'ec%tar %eries:

    aB Para %eries %e retornan %n nico )a#or se ap#ica e# *Gtodo &etSin&leReslt

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    62/179

    PROYECTO EMPRESARIAL #2

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    dB "%ando se ap#ica e# *Gtodo geting#eRes%#t AB> si e6isten *%cos res%#tados Aen#%gar de %noB se de)%e#)e #a e6cepción N#'ni)(eRes(ltExcepti#n  A#aap#icación deberá contro#ar #a e6cepciónB. (a oc%rrencia de esta e6cepción nogenera %n ro##bac8 de #a transacción en c%rso.

    eB "%a#%ier %ery de tipo E(E"! p%ede especi;icar ade*ás e# %so de *odos deb#o%eo para #os registros se#eccionados con e# ;in de no i*pactar en #a base dedatos #os indicadores de rendi*iento. Esto se e'ec%ta )a e# *Gtodo set-ocL%ode

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    63/179

    PROYECTO EMPRESARI AL #3

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    1.).. Sintais de JP,-

    TMrmino >escripci!n

    entityNa*e No*bre de #a Entidad. Por de;ecto es e# no*bre de #a c#ase.

    )ariab#e denti;icador %e sig%e #as reg#as de a)a.

    state;ie#de6p !Gr*ino %ti#i@ado para ap%ntar acia %n ca*po de #a entidad.Por e'e*p#o: i D%*no está representado por #a )ariab#e Da>se p%ede ap%ntar a #os ca*pos co*o: a.código> a.no*bre.

    sing#ere#e6p !Gr*ino %ti#i@ado para ap%ntar acia %n ca*po de %na entidad>pero %e res%e#)e re#aciones de tipo one/to/one o *any/to/one.

    Por e'e*p#o: i D%*no está representado por #a )ariab#e Da>se p%ede ap%ntar a #os ca*pos co*o: a.c%rsos> a.c%rsos.notas.

    *%#tire#e6p !Gr*ino %ti#i@ado para ap%ntar acia %n ca*po de %na entidad>pero %e res%e#)e re#aciones de tipo one/to/*any o *any/to/*any.

    Por e'e*p#o: i D%*no está representado por #a )ariab#e Da>se p%ede ap%ntar a #os ca*pos co*o: a.te#G;onos

    re#;ie#d !Gr*ino co*p%esto de %na )ariab#e y %na de #os ca*posre#acionados sin na)egar por re#aciones inter*edias.

    Por e'e*p#o: i D%*no está representado por #a )ariab#e Da>se p%ede %sar a.cic#o

    constr%ctor*etod "onstr%ctor para %na c#ase %e no es Entidad.

    np%tpara* $ariab#e %e representa a %n pará*etro de entrada y debe serasignado antes %e e# %ery sea e'ec%tado.

    #itera# $a#or de %n tipo partic%#ar Apor e'e*p#o %n string co*o Do#a o%n int co*o 99B.

    pattern)a#%e Un string %e representa %n )a#or ( )á#ido.

    Por e'e*p#o: DZPEREX

    escapecar Un carácter %e representa %na sec%encia de escape.

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    64/179

    PROYECTO EMPRESARIAL #4

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    65/179

    PROYECTO EMPRESARI AL #5

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    66/179

    PROYECTO EMPRESARIAL ##

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    67/179

    PROYECTO EMPRESARI AL #$

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    Res,-en 

    1. i;erenciar #as c#ases %ery y !yped%ery.

    ". Recordar %e e# *Gtodo create%ery de# EntityManager sir)e para #a creación decons%#tas diná*icas.

    '. Recordar %e e# *Gtodo createNa*ed%ery de# EntityManager sir)e para #acreación de cons%#tas Dno*bradas> #as c%a#es se de;inen co*o anotaciónA%ti#i@ando QNa*ed%eryB dentro de #a entidad respecti)a.

    ). (as anotaciones QNa*ed%ery y QNa*ed%eries se %ti#i@an para de;inircons%#tas Dno*bradas.

    . E# *Gtodo setPara*eter sir)e para asignar %n )a#or a %n pará*etro de %nasentencia P(. E6isten dos ;or*as: por pará*etro no*brado y por pará*etroordina#.

    P%eden re)isar #os sig%ientes en#aces para a*p#iar #os conceptos )istos en esta%nidad:

    o P(: ttp:HH???.ob'ectdb.co*H'a)aH'paH%eryHpara*eter  

    http://www.objectdb.com/java/jpa/query/parameterhttp://www.objectdb.com/java/jpa/query/parameterhttp://www.objectdb.com/java/jpa/query/parameterhttp://www.objectdb.com/java/jpa/query/parameter

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    68/179

    PROYECTO EMPRESARIAL #&

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    69/179

    PROYECTO EMPRESARI AL #'

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    )A*A SER*ER FACES 2

    -#5R# >E -A UNI>A> >E APREN>I?AJE  tGr*ino de #a %nidad> e# a#%*no> constr%ye %na ap#icación Feb %ti#i@ando e#*ode#o M$" y toda #a ;%nciona#idad pro)ista por e# ;ra*e?or8 0 Aa)aer)er 0acesB en Pri*e;aces en #a capa $ista y P& en #a capa contro#ador

    TE%ARI# ".1 Tema : /ndamentos de JS/

    2.1.1 : ntrod%cción a 02.1.2 : &r%itect%ra de 02.1.3 : "ic#o de )ida de %n re%est2.1.4 : 0ace#ets2.1.5 : Managed ean2.1. : (eng%a'e de E6presiones 02.1.7 : ac8ing eans

    "." Tema : Componentes de Inter2az de sario2.2.1 : ntrod%cción

    2.2.2 : &r%itect%ra de "o*ponentes U2.2.3 (ibrera "ore2.2.4 (ibrera !M(2.2.5 (ibrera User nter;ace2.2. (ibrera de "o*ponentes "o*p%estos

    ".' Tema 0 : Con+ersiones4 Validaciones y E+entos2.3.1 : ntrod%cción2.3.2 : E# siste*a de "on)ersión de 02.3.3 E# siste*a de $a#idación de 02.3.4 E# siste*a de Mensa'es de 02.3.5 E# *ode#o de E)entos de 0

    UNIDAD 

    2

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    70/179

    PROYECTO EMPRESARIAL $+

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    ".) Tema ( : Inte&raci!n JS/ y JPA2.4.1 : 0 y &&<2.4.2 : ntegración 0 = P&2.4.3 : E*p#eando otras i*p#e*entaciones de 02.4.4 : !ab#as 0: 0acets> data!ab#e y pane#,rid

    2.4.5 : Manteni*iento de tab#as

    ACTIVI>A>ES PR#PUESTAS 

      *p#e*entar proyectos con #a estr%ct%ra 0

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    71/179

    PROYECTO EMPRESARI AL $(

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    72/179

    PROYECTO EMPRESARIAL $2

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    ".1. /UN>A%ENT#S >E JS/

    ".1.1. Introdcci!n a JS/

    a)a er)er 0aces A0B es e# estándar Do;icia# en #a capa ?eb para #a p#ata;or*aa)a EE. 0 inc#%ye %n con'%nto de co*ponentes prede;inidos para #a inter;a@ grá;ica

    ?eb AUB> %n *ode#o de progra*ación basado en e)entos y #a abi#idad para aCadirco*ponentes desarro##ados por terceros.

    E# ob'eti)o de #a tecno#oga a)a er)er 0aces A0B es constr%ir ap#icaciones ?eb de;or*a si*i#ar a có*o se constr%yen ap#icaciones standa#one con a)a ?ing> &F!A&bstract Findo? !oo#8itB> F! Atandard Fidget !oo#8itB o c%a#%ier otra &P si*i#ar.0 ;%e creado *ediante e# traba'o de #a organi@ación "P Aa)a "o**%nity ProcessB*ediante #a especi;icación R 127 iniciada a *ediados de# aCo 2--1 y ;ina#i@ada enMar@o de# 2--4. % principa# ob'eti)o es ;aci#itar e# desarro##o de inter;aces grá;icaspara #as ap#icaciones ?eb por *edio de #os sig%ientes ca*inos:

      Proporciona %n desarro##o basado en co*ponentes> independientes de# c#iente.e esta *anera se incre*enta #a prod%cti)idad de# desarro##ador.

      i*p#i;ica e# acceso y ad*inistración de #os datos capt%rados o en)iados a #ainter;a@ de %s%ario.

      Mane'a de ;or*a a%to*ática e# estado de #a inter;a@ de %s%ario entre *#tip#espeticiones !!P.

      Proporciona %n D;ra*e?or8 a*igab#e *ediante e# %so de patrones dear%itect%ra para #as ap#icaciones ?eb.

    En res%*en> to*a #os *e'ores e#e*entos de #os ;ra*e?or8s %e #e precedieron A",>er)#et> P> tr%ts> pring M$"B y #os co*bina en %n con'%nto de &PKs estándares

    para e# desarro##o de inter;aces de %s%ario.

    (a )ersión act%a# es 0 2.- y está soportada por #as sig%ientes especi;icaciones:

      R 127 : a)a er)er 0aces A ttp:HH???.'cp.orgHenH'srHdetai#IidJ127  B

      R 252: a)a er)er 0aces 1.2 A ttp:HH???.'cp.orgHenH'srHdetai#IidJ252  B

      R 27: esign/!i*e Metadata ;or a)aer)er 0aces "o*ponentsAttp:HH???.'cp.orgHenH'srHdetai#IidJ27 B

      R 314: a)a er)er 0aces 2.- Attp:HH???.'cp.orgHenH'srHdetai#IidJ314  B

    ser 0 %na especi;icación> se p%eden encontrar i*p#e*entaciones de di;erentes;abricantes> #o c%a# per*ite no )inc%#arse con ningn pro)eedor en partic%#ar y tener #atota# #ibertad de se#eccionar a%e# %e *ás se aco*ode a n%estras necesidades.

    g%nas i*p#e*entaciones de 0 2.- son:  Proyecto %ojarra  A(a i*p#e*entación de re;erencia de UN Microsyste*s

    aora propiedad de Orac#e "orp.B. e p%ede cons%#tar en e# sig%iente en#ace:ttps:HH'a)aser)er;aces.de).'a)a.netH 

    http://www.jcp.org/en/jsr/detail?id=127http://www.jcp.org/en/jsr/detail?id=127http://www.jcp.org/en/jsr/detail?id=127http://www.jcp.org/en/jsr/detail?id=127http://www.jcp.org/en/jsr/detail?id=127http://www.jcp.org/en/jsr/detail?id=252https://javaserverfaces.dev.java.net/http://www.jcp.org/en/jsr/detail?id=314http://www.jcp.org/en/jsr/detail?id=252http://www.jcp.org/en/jsr/detail?id=127

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    73/179

    PROYECTO EMPRESARI AL $3

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

      Orac#e &0 0aces> %e e6tiende #a ;%nciona#idad de 0 proporcionando*%cas ;%nciona#idades &'a6.

      %y/aces  A0%ndación &pace ttp:HH*y;aces.apace.orgH B.  Ric* /aces> a#o'ado por boss A,r%po RedatB en e# sig%iente en#ace:

    ttp:HH'boss.orgHric;aces .  ICE /aces> %e contiene di)ersos co*ponentes para inter;aces de %s%ario *ás

    enri%ecidas. e p%ede obtener in;or*ación en e# en#ace:ttp:HH???.ice;aces.orgH*ainHo*eH .

       j,ery)js2   %e contiene co*ponentes basados en e# 0ra*e?or8 a)acript '%ery. Es %n proyecto a#o'ado por ,oog#e "ode en e# sig%iente en#ace:ttp:HHcode.goog#e.co*HpH'%ery4's;H 

    ".1.". ArFitectra de JS/

    (os ob'eti)os de diseCo de 0 y #a *anera en %e #os c%*p#e se aprecian en e#c%adro sig%iente:

    #9jeti+o de >iseo /orma de Implementaci!n#9jeti+o O1:"rear %n ;ra*e?or8 estándar deco*ponentes U %e p%eda ser potenciadopor erra*ientas de desarro##o y %e a s%)e@ per*ita crear U de a#ta ca#idad y*ane'ar #a incorporación de dicas UKs a #a

    ap#icación.

    0 proporciona %na &P basada enco*ponentes %e se p%eden %sar paraensa*b#ar ap#icaciones ?eb.

    (os co*ponentes U estándar proporcionadospor #a especi;icación> están aco*paCados de

    Dtag #ibraries de tipo Dcore y Dt*# Acon;%nciona*iento *%y si*i#ar a !(B#9jeti+o O":

    e;inir %n con'%nto #igero de c#ases a)apara #os co*ponentes U> e# estado de #osco*ponentes y e# *ane'o de e)entos.#9jeti+o O':Proporcionar %n con'%nto co*n deco*ponentes U inc#%yendo #os e#e*entosestándares para ;or*%#arios !M(. icos

    http://myfaces.apache.org/http://jboss.org/richfaceshttp://jboss.org/richfaceshttp://jboss.org/richfaceshttp://jboss.org/richfaceshttp://www.icefaces.org/main/home/http://www.icefaces.org/main/home/http://www.icefaces.org/main/home/http://www.icefaces.org/main/home/http://code.google.com/p/jquery4jsf/http://code.google.com/p/jquery4jsf/http://code.google.com/p/jquery4jsf/http://code.google.com/p/jquery4jsf/http://code.google.com/p/jquery4jsf/http://www.icefaces.org/main/home/http://jboss.org/richfaceshttp://myfaces.apache.org/

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    74/179

    PROYECTO EMPRESARIAL $4

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    co*ponentes deben poder ser)ir parade;inir n%e)os co*ponentes.#9jeti+o O):Proporcionar %n *ode#o de a)aeanspara contro#ar #os e)entos en e# #ado c#ientey conectar#os a #a ap#icación.

    0 proporciona %n *ecanis*o de ;áci# e*p#eo*ediante e# c%a# #os co*ponentes U en e# #ado?eb están dGbi#*ente acop#ados A*ediante %n(eng%a'e de e6presiones si*i#ar a !(B a #osPOOKs de# ser)idor A conocidos co*oDManaged beans B

    (os D*anaged eans se dec#aran en e# arci)o2aces$con2i&4 ml o se %san anotaciones.

    E# contro# de #a con)ersación se rea#i@a en e#D0 re%est process (i;ecyc#e.

    #9jeti+o O:e;inir &PKs para )a#idación de datos deentrada.

    E# D0 re%est process #i;ecyc#e ta*biGnper*ite *ane'ar #as )a#idaciones y con)ersionesdependiendo de #os e)entos %e oc%rren en #aap#icación.

    0 per*ite constr%ir )a#idacionespersona#i@adas.

    #9jeti+o O:Especi;icar %n *ode#o para e# *ane'o dei1+N en #os co*ponentes U.

    0 proporciona e# *ane'o de Dreso%rceb%nd#es as co*o de #oca#i@ación A(1-NB. (osco*ponentes U a%to*ática*ente reconocenestas caractersticas %na )e@ %e e# Db%nd#e asido con;ig%rado.

    #9jeti+o O0:Proporcionar %na generación a%to*áticade# ;or*ato apropiado de sa#ida acia %nc#iente deter*inado.

    0 proporciona &PKs bastante ;#e6ib#esbasadas en tecno#ogas de Drendering %ep%eden ser Denc%;adas ba'o de*anda. Pore'e*p#o> si e# c#iente es %n iPone e# Drender de#a página será !M( espec;ico para dicoe%ipo.

    #9jeti+o O(:oportar accesibi#idad

    0 con;a p#ena*ente en #as tecno#ogas e6istentes de a)a EE. Eso signi;ica %e%na ap#icación 0 es básica*ente %na ap#icación desarro##ada ba'o #os estándaresa)a EE con a#g%nas con;ig%raciones espec;icas:

    Con2i&raci!n O1: entro de# Ddep#oy*ent descriptor Aarci)o we.xmlB de #aap#icación> se debe registrar e# ser)#et contro#ador A##a*ado D0aces "ontro##erB. !eneren c%enta %e en a#g%nos contenedores ?eb co*o ,#ass0is )3 no se re%iere e#arci)o ?eb.6*#.

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    75/179

    PROYECTO EMPRESARI AL $5

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    En caso %e e# arci)o ?eb.6*# no e6ista o no se enc%entre> e# D0aces "ontro##er*apea #os %r#s sig%ientes de ;or*a a%to*ática:

      H;acesH[

      [.'s;

      [.;aces

    !a*biGn se p%ede agregar #os sig%ientes D*appings en e#we.xml:

    Con2i&raci!n O": Opciona#*ente se p%ede tener %n arci)o de con;ig%ración de 0##a*ado &aces.c#n&i+.xml e# c%a# está %bicado a# *is*o ni)e# %e e# ?eb.6*#

    E# arci)o contiene #a con;ig%ración de todos #os e#e*entos de %na ap#icación 0>a%n%e ta*biGn p%eden e*p#earse Danotaciones en e# código 'a)a para e)itar e# %sode este arci)o. Un e'e*p#o de# contenido de# arci)o &aces-c#n&i+.xml es:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    76/179

    PROYECTO EMPRESARIAL $#

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    Con2i&raci!n O': i se está e'ec%tando #a ap#icación en %n contenedor ?eb %e nosoporta a 0> #as #ibreras de# ;ra*e?or8 deben co#ocarse en e# ;o#der Dli de #aap#icación:

    (a constr%cción de páginas se rea#i@a con D0ace#ets

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    77/179

    PROYECTO EMPRESARI AL $$

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    En res%*en> %na ap#icación 0 es co*o c%a#%ier ap#icación ?eb %e inc#%ye #ossig%ientes e#e*entos:

      (as páginas ?eb.  (as #ibreras de eti%etas Ao tagsB para insertar co*ponentes U a #as páginas.  Un con'%nto de Dbac8ed beans> %e son co*ponentes %e de;inen #as

    propiedades y ;%nciona#idad de #os co*ponentes de U.  &rci)os de con;ig%ración para e# *ode#o na)igaciona# Aa%n%e es opciona#B.  E# indispensab#e arci)o descriptor ?eb.6*#  &rci)os desarro##ados por #os progra*adores: con)ertidores> )a#idadores>

    #isteners.  Opciona#*ente a#g%nas eti%etas persona#i@adas para ob'etos U

    persona#i@ados.

    ".1.'. Ciclo de +ida de n reFest

    E# cic#o de )ida de %na petición 0 es #a sec%encia de e)entos %e s%ceden c%andose acen peticiones !!P con %na ap#icación 0 A#a interacción entre e# na)egador?eb y #a ap#icaciónB.

    (a pri*era )e@ %e se e'ec%ta #a petición> 0 crea %n árbo# de co*ponentes U en*e*oria. Para #as sig%ientes peticiones e# árbo# es rápida*ente constr%ido de n%e)o:si se capt%ran )a#ores en %n ;or*%#ario> estos son procesados y )a#idados.

    i #a )a#idación es correcta> #os )a#ores capt%rados son cargados a# *ode#o.

    (%ego> se procesan #os e)entos y se reportan #os errores %e p%dieran oc%rrir.

    i todos #os e)entos an sido procesados y e# *ode#o a sido act%a#i@adocorrecta*ente> se en)a %na resp%esta ;ina# ArenderB a# c#iente. E# *ane'o de# cic#o de)ida de *anera a%to*ática ##e)a %n contro# de #os ca*bios en #os estados de ta# ;or*a%e e# c#iente sie*pre re;#e'e #os ca*bios en e# #ado ser)idor.

    E# cic#o co*p#eto se *%estra en e# grá;ico:

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    78/179

    PROYECTO EMPRESARIAL $&

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    Una e6p#icación deta##ada de# cic#o:

    0&E 1: Restore $ie?E# concepto de D0aces $ie? es #a representación en e# #ado ser)idor 3 Aa *anera deespe'oB de #a inter;a@ de %s%ario %e se *%estra en e# na)egador.

    En esta ;ase> se resta%ra %na D)ista e6istente de a#g%na transacción anterior o segenera %na n%e)a en ;%nción a #a petición !!P entrante.

    i #a petición es n%e)a> se genera %na D)ista %e se a#*acena en %n ob'eto conocidoco*o D0aces "onte6t> e# c%a# sir)e co*o a#*acena*iento para #os datos de #apetición ttp d%rante e# *ane'o de# cic#o de )ida.

    (a )ista generada sig%e %na estr%ct%ra de árbo# co*o #a sig%iente4:

    0&E 2: &pp#y Re%est $a#%es

    En esta ;ase> se e'ec%ta todo e# traba'o de procesar #os pares de datos Aconocidosco*o Dvalue- pair   parametersB %e ##egan en e# re%est desde #a página *ostrada en e##ado c#iente: e# pará*etro y s% )a#or.

    e esta *anera> cada e#e*ento de# árbo# %e representa a #a D0aces $ie? se cargacon e# )a#or respecti)o co*o se *%estra en e# grá;ico5:

    3 * di"erencia de una estructura de rbol + ue se "orma en el nave,ador en el caso de la '#aces

    4iew se ,enera en el lado del servidor.

     6r"ico tomado de '(ava 7erver #aces 2.0: &he omplete 9e"erence p, 0.

    5 6r"ico tomado de '(ava 7erver #aces 2.0: &he omplete 9e"erence p, 1.

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    79/179

    PROYECTO EMPRESARI AL $'

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    e debe especi;icar %e e6isten dos tipos de co*ponentes U:

      &%e##os %e p%eden aceptar )a#ores: ca*pos de te6to> ca'as de ce%eo> etc.

      &%e##os %e per*iten e'ec%tar acciones: botones y en#aces.

    Es b%eno saber %e se p%ede a#terar e# c%rso nor*a# de #as ;ases para casosespecia#es. Para e##o se debe con;ig%rar e# atrib%to Dimmediate en %n co*ponente U.

    !a*biGn es b%eno especi;icar %e e6isten 3 tipos de inter;aces %sadas:

      Value-older   : i*p#e*entada por todos #os co*ponentes U %e tienen e#atrib%to D)a#%e

      EditableValue-older : i*p#e*entada por todos #os co*ponentes U de %n;or*%#ario> %e poseen )a#ores editab#es.

       ctionS ource: i*p#e*entada por #os co*ponentes %e generan acciones.

    0&E 3: Process $a#idations

    En esta ;ase se e'ec%ta #a con)ersión y )a#idación de #os datos recibidos. 0 in)ocaa# *Gtodo processValidators

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    80/179

    PROYECTO EMPRESARIAL &+

    CARRERA DE COMPUTACIÓN E INFORMÁTICA CIBERTEC

    i oc%rre a#gn error de con)ersión o )a#idación> #a propiedad D+alid se *arca enD2alse y se enco#a %n ob'eto D0acesMessage en e# 0aces"onte6t. Estos ob'etos serán*ostrados posterior*ente en #a )ista de# #ado c#iente.

    0&E 4: Update Mode# $a#%es

    En esta ;ase> #os datos se pro*%e)en acia %n ob'eto a)a conocido co*o DManagedean.

    E# *ecanis*o es si*i#ar a #as ;ases anteriores: en #a instancia UIVieRoot se e'ec%tae# *Gtodo processUpdate etc.

    6 6r"ico tomado de: '(ava 7erver #aces 2.0: &he omplete 9e"erence p, 3.

  • 8/21/2019 Manual 2015-I 06 Proyecto Empresarial (CI) (0780)

    81/179

    PROYECTO EMPRESARI AL &(

    CIBERTEC CARRERA DE COMPUTACIÓN E INFORMÁTICA

    &diciona#*ente> se graba e# estado act%a# de #a D0aces $ie? para %e estG disponib#een #os s%bsig%ientes re%ests.

    a)a er)er 0aces per*ite ade*ás %e se p%eda codi;icar Dpase #isteners paracontro#ar #a e'ec%ción de código en a#gn p%nto e6acto de# cic#o de )ida de# re%est.Para e##o se debe:

      i*p#e*entar #a inter;ace P*ase-isterner. 

      registrar #a c#ase en e# arci)o 2aces$con2i&.ml o %sar anotaciones.

    ".1.). /acelets(a tecno#oga deno*inada D/acelets Vie >eclaration -an&a&e A$(B ;%edesarro##ada co*o %na e6tensión de 0 por J acob  Hookom  e incorporada a #aespeci;icación 0 2.-. E# ob'eti)o ;%e ree*p#a@ar e# %so de P Aa%n%e se *antienee# reconoci*iento de #os P por *oti)os de co*patibi#idadB.

    (os /acelets per*iten a #os desarro##adores dec#arar co*ponentes U en di;erentestecno