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 : ¬aciones 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 : ¬aciones1.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 ¬aciones
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: ¬aciones #ó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.
¬aciones ;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 ¬aciones: 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