Maven - Hibernate - Spring

download Maven - Hibernate - Spring

of 75

Transcript of Maven - Hibernate - Spring

  • 7/22/2019 Maven - Hibernate - Spring

    1/75

    BO CO THC TP TT NGHIP I HC CHNG I - MAVEN

    1

    CHNG I MAVEN

    1.Khi nim :Maven l mt phn mm cng c, xut bn bi Apache Software Foundation, c s dng

    xy dng v qun l cc d n mt cch t ng, da trn mt khi nim l POM (vit tt

    ca Project Object Model).POM l mt n v nn tng ca Maven, l mt file XML cha ng cc thng tin v cuhnh ca d n. Nhng thng tin v cu hnh ny s c Maven s dng xy dng nncu trc ca d n.

    Maven c s dng chnh trong Java, nhng bn cnh cn h tr cho cc ngn ng khcnh PHP, C#, Ruby, Scala2.Chc nng :

    Mc ch chnh ca Maven l gip cho cc nh pht trin phn mm c th trin khai d nhon thnh trong thi gian ngn nht v c hiu qu. Maven c th qun l vic xy dng dn, bo co v ti liu ha thng tin d n.Ngoi chc nng xy dng v qun l thng tin cc d n, Maven cn cho php t ng

    download cc th vin v cc plug-ins t mt hay nhiu ni t trn mng v. Cc ni nyc gi l Maven remote repositories (cc kho cha ). Mc nh th Maven s ly th vin tremote repository ca Maven ti a chhttp://repo1.maven.org/maven2.

    Cc th vin ny sau khi c ly v t trn mng s c lu tr ti my tnh s dngcho nhng ln sau. V nguyn tc, khi chy, Maven s tm cc th vin kho cha localtrong my tnh trc, nu khng c th s ly t trn mng. V vy, ch c ln u tin buildchng trnh hoc khi d n cns dng th vin mi th my tnh phi ni kt ni vi mngInternet, cn nhng ln tip sau th c th chy offline.3.Ci t :

    Hin ti Maven cung cp 2 phin bn Maven 2 v Maven 3. Trong bi bo co ny s dngphin bn Maven2. Ta c th download Maven v ti a chhttp://maven.apache.org/ .

    Sau khi download Maven v my tnh v gii nn, vic tip theo chng ta nn cu hnh localrepository cho Maven.

    u tin, ta to mt th mc con c tn l m2repository trong th mc gc ca maven, sau m file setting.xml trong th mc conf ca Maven v tm n v tr th ,thit lp gi tr nh sau:

    ng dn n th mc m2repository chy Maven, yu cu my tnh phi ci t sn JDK 5 hoc cao hn. thun tin chovic chy Maven, ta to ra cc bin mi trng vi gi tr nh sau :

    JAVA_HOME= ng dn n th mc gc ca JDKM2_HOME= ng dn n th mc gc ca Maven 2

    CATALINA_HOME= ng dn n th mc gc ca TomcatM2_REPOSITORY= %M2_HOME%\m2repositorySau thm vo PATH cc gi tr sau:

    %JAVA_HOME%\bin;%M2_HOME%\bin;%PATH%;C:\WINDOWS\system32Sau khi thit lp bin mi trng xong, m ca s cmd v g lnh mvn version kim thkt qu ci t.n y hon thnh vic ci t Maven.4.Cch s dng Maven:

    Khi lm vic vi Maven, ta c th to ra nhiu loi d n khc nhau nh cc ng dngWeb, cc ng dng cho Windows, hay c nhng ng dng cho in thoi di ng s dng hiu hnh Android.

    Ngoi ra, Maven cn c th lm vic trn nhiu IDE nh Eclipse, NetBeans,IntelliJIDEA,JBuilderTrong bi bo co ny s dng Eclipse IDE minh ha.

    http://repo1.maven.org/maven2http://repo1.maven.org/maven2http://maven.apache.org/http://maven.apache.org/http://maven.apache.org/http://repo1.maven.org/maven2
  • 7/22/2019 Maven - Hibernate - Spring

    2/75

    BO CO THC TP TT NGHIP I HC CHNG I - MAVEN

    2

    Nhng trc khi i vo tm hiu cch lm th no s dng Maven xy dng nn mt dn, chng ta s tm hiu qua v hai khi nim Maven Dependencies v Maven Plug-ins.a)Maven Dependencies:

    Maven cung cp mt c ch c gi l c ch ph thuc. C ch ny bao gm 2 kiu. Thnht l s ph thuc gia d n vi cc th vin, framework . Th hai l s ph thuc giacc d n vi nhau. Thng thng, cc dependency ny l cc on m lnh c ng gi

    thnh cc file thc thi. Nh vy, nh c ch ny, Maven giiquyt c vn ti s dngv k tha m lnh. T tit kim c rt nhiu thi gian xy dng chng trnh.C ch ph thuc c tnh bc cu. Gi s d n A ph thuc d n B, d n B li ph thuc

    d n C th khi d n C cng s ph thuc vo d n A. Nhng cng c nhng trng hpth tnh bc cu khng thc s cn thit th sao?... Maven cung cp mt rng buc c gil phm vi ph thuc (Dependency Scope).

    Dependency Scope bao gm 4 phm vi di y:+compile : L phm vi mc nh, c s dng khi khng c bt k phm vi c c chnh. Khi s dng phm vi ny, s ph thuc c phm vi ph thuc ny s c lan truynqua tt c cc d n ph thuc. Thng c dng cho cc th vin cn thit s dng chovic bin dch

    +provided : Cng gn ging nh compile nhng khng c tnh bc cu+runtime : Thng c dng i vi cc th vin ch cn thit cho qu trnh thc thi, khngc yu cu trong qu trnh bin dch, c tnh cht bc cu +test : Thng c dng cho cc th vin phc v cho vic testing, khng c tnh cht bccu

    Cc ph thuc ny c khai bo trong pom.xml v sau y l qui cch khai bo chun:

    groupIdartifactIdversionscope

    V d cth v s ph thuc :

    junitjunit3.8.1test

    trn, ta s dng th vin junit cho d n, y l th vin c dng cho vic testing

    nn scope c khai bo l test.

    Tip sau y l 1 file pom.xml n gin :4.0.0groupIdartifactIdversionpackaging

    junitjunit

    3.8.1test

  • 7/22/2019 Maven - Hibernate - Spring

    3/75

    BO CO THC TP TT NGHIP I HC CHNG I - MAVEN

    3

    Trong :

    cp cao nht ca file pom.xml

    4.0.0

    ca d n. Da vo groupId, Maven s to ra mt khu vc dnh ring cho t chc hoc nhmtrong local repository my tnh cc b. Ti y s lu li ton b thng tin, kt qu thc thica d n bao gm cc file cu hnh XML, JAR, WAR, EARgroupId nn tun theo quic t tn package trong Java

    ackaging: Ch nh loi file thc thi ca d n sau khi c bin dch (jar, war, ear)artifactId : Tn ca d n.

    -SNAPSHOTdependencies: Bao gm tt c cc th vin m d ns dngdependency : Chi tit mt th vin m d ns dng

    b) Maven Plug-ins:

    Nu Maven Dependencies l cc th vin, framework cung cp chc nng cho d n thMaven Plug-ins li l cng c thc thi cc th vin, framework . Tt c cng vic uc hon thnh bi cc plug-in ny.

    Maven Plug-ins c chia lm 2 nhm : build plug-ins v reporting plug-ins. Hin nay crt nhiu plug-in m Maven cung cp, chi tit v cc plug-in ny chng ta c th tham khoti website chnh thc ca Maven : http://maven.apache.org/plugins/index.html

    Tip sau y, chng ta s tm hiu cch s dng cc plug-in ph bin hay c s dng nhtkhi lm vic vi Maven.c)To d n vi Maven:

    to mt d n vi Maven,chng ta s s dng plug-in c tn archetype. y l tp hp

    cc template cc loi d n khc nhau c gi l cc archetype. Plug -in ny cung cp 4 chcnng sau y :+archetype:create : To mt d n t mt template c sn+archetype:generate : To mtd n t mt template c sn nhng s cho ngi dng lachn loi template mong mun.+ archetype:create-from-project : To ra mt template t mt d n c sn+ archetype:crawl: Tm kim repository cho cc template v cp nht cho chng

    ng archetype:create :- to d n cho Windows :

    mvn archetype:create -DgroupId=groupId -DartifactId=artifactId -Dversion=version- to d n cho Web :

    mvn archetype:create -DgroupId=groupId -DartifactId=artifactId -Dversion=versionDarchetypeArtifactId=maven-archetype-webapp

    Ch rng thm vo cu lnh DarchetypeArtifactId=maven-archetype-webapp ch choMaven bit ta mun to mt d n Web.

    C php nh sau : mvn archetype:generateKt qu sau lnh ny l mt danh sch rt nhiu template d n c nh s th t, vic

    cn li ca chng ta l chn template m mnh mong mun cho d n.Ty theo loi template m ta chn th khun mu thu c s khc nhau nhng hu ht u

    c im chung nh sau :

    http://maven.apache.org/plugins/index.htmlhttp://maven.apache.org/plugins/index.html
  • 7/22/2019 Maven - Hibernate - Spring

    4/75

    BO CO THC TP TT NGHIP I HC CHNG I - MAVEN

    4

    Hnh 1.1 - Cu trc chung ca mt d n MavenMaven h tr lm vic trn rt nhiu framework nh Hibernate, Spring MVC, Struts, Khi

    d n cn pht trin trn cc framework no, chng tach cn thm vo file pom.xml ccdependencies cc framework . Vic thm cc dependencies chng ta nn tham kho trntrang ch ca Maven hoc trn cc trang tutorial trn Web nh http://www.mkyong.com,http://www.roseindia.net

    Sau y l danh sch cc dependencies s dng cho Hibernate v Spring :

    hibernatehibernate33.2.3.GA

    hibernate-annotationshibernate-annotations3.3.0.GA

    hibernate-commons-annotations

    hibernate-commons-annotations3.0.0.GA

    org.slf4jslf4j-log4j121.6.1

    cglibcglib2.2

    Th mc ngha

    Th mcgc Cha file pom.xml v ton b th mc con

    src/main/java Ni cha cc lp Java cho d n

    src/main/resourcesNi cha cc file ti nguyn cn thit cho d n nh cc file thuc tnh, file cu hnh

    src/test/java Ni cha cc lp cho vic testing

    src/test/resources Ni cha cc ti nguyn cn thit cho testing

    http://www.mkyong.com/http://www.roseindia.net/http://www.roseindia.net/http://www.mkyong.com/
  • 7/22/2019 Maven - Hibernate - Spring

    5/75

    BO CO THC TP TT NGHIP I HC CHNG I - MAVEN

    5

    asmasm3.0

    dom4j

    dom4j1.6.1

    commons-loggingcommons-logging1.1.1

    commons-collectionscommons-collections

    3.2.1

    org.apache.commonscommons-io1.3.2

    commons-langcommons-lang2.3

    antlrantlr2.7.7

    javax.persistencepersistence-api

    1.0

    javax.transactionjta1.1

    javax.servletservlet-api2.5

  • 7/22/2019 Maven - Hibernate - Spring

    6/75

    BO CO THC TP TT NGHIP I HC CHNG I - MAVEN

    6

    javax.servletjstl1.1.2runtime

    mysqlmysql-connector-java5.1.9

    org.springframeworkorg.springframework.core3.0.1.RELEASE

    org.springframeworkorg.springframework.web3.0.1.RELEASE

    org.springframeworkorg.springframework.web.servlet3.0.1.RELEASE

    org.springframeworkspring2.5.6

    org.springframework.webflowspring-js2.3.0.RELEASE

    org.springframeworkspring-orm2.5.1

    Sau khi thm y cc th vin cn thit cho d n vo pom.xml. Vic cn li l chy

    Maven. T ca s cmd, ta di chuyn n th mc gc ca d n (ni cha file pom.xml) , sdng lnh :

    mvn installLnh ny s download cc th vin cn thit v local repository s dng cho nhng ln

    sau hoc cho nhng d n khc, ng thi ci t chng vo classpath ca d n, chy cc file

    test (nu c), bin dch source code thnh cc file thc thi ng thi cng a cc file ny volocal repository. y cng l lnh hay c s dng nht khi lm vic vi Maven.

  • 7/22/2019 Maven - Hibernate - Spring

    7/75

    BO CO THC TP TT NGHIP I HC CHNG I - MAVEN

    7

    Cui cng, c th import d n vo Eclipse IDE, ta s dng lnh :mvn eclipse:eclipse

    Di y l danh sch mt s lnh c bn khc v cc chc nng chnh ca chng:+mvn validate : Kim tra li thng tin v d n+mvn compile : Bin dch m ngun ca d n thnh cc file .class+mvn test : Chy cc file test chng trnh ca d n

    +mvn package : ng gi chng trnh thnh cc file thc thi (.jar, .war)+mvn verify : Kimtra s hp l ca tt c cc gi trong chng trnh +mvn deploy : c s dng trong cc d n web a file war ca chng trnh n webserver nh Glashfish, Tomcat, WebLogic, JRun+mvn clean : Xa ton b kt qu c bin dch bng lnh mvn compile+mvn site : To document site cho d n5. Deploy d n Maven Web n Tomcat:

    Trc ht chng ta phi cu hnh web server trong file setting.xml nm trong th mc confca Maven:

    tomcatusername******

    Trong :

    -id: Tn server Tomcat-username : Tn ng nhp vo Tomcat-password : Mt khu ng nhp vo Tomcat

    Sau khi cu hnh xong server, trong file pom.xml ca d n, ta thm vo nh sau :

    org.codehaus.cargocargo-maven2-plugin1.0.3

    standalone${CATALINA_HOME}

    -Xdebug-Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n

    http://localhost:8080/manager

    localhost8080username******

    installed

    groupIdartifactId

    http://localhost:8080/managerhttp://localhost:8080/manager
  • 7/22/2019 Maven - Hibernate - Spring

    8/75

    BO CO THC TP TT NGHIP I HC CHNG I - MAVEN

    8

    type

    tomcat6x

    installed${CATALINA_HOME}

    trn, chng ta s dng plug-in cargo lm nhim v deploy cc file war n web server.

    Trong th deployable :+groupId : groupId ca d n+artifactId : artifactId ca d n

    +type : Thng thng c gi tr l war hoc ear ty thuc vo d nSau khi cu hnh xong, vic u tin l chng ta phi chy server Tomcat bng lnh sau

    y : %CATALINA_HOME%\bin\catalina.bat jpda start deploy chng trnh n Tomcat ta s dng lnh sau : mvn cargo:deploy

    Nh vy, chng ta tm hiu xong nhng nt c bn v Maven. C th ni, khi lm vicvi Maven, cng vic build chng trnh tr nn n gin v d dng hn rt nhiu. Cng nithm, trong lnh vc pht trin phn mm, bn cnh Maven cn c mt cng c build d n tlu cng rt ni ting , l Ant. Nhng kch bn ca Ant li phc tp hn Maven, hnna Ant khng c kh nng s dng li m ngun v tc thc thi chm hn Maven. Chnhv th m Maven ngy cng c s dng ph bin trong cc d n Java.

  • 7/22/2019 Maven - Hibernate - Spring

    9/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    9

    CHNG II HIBERNATE FRAMEWORK

    I.Tng quan v Hibernate :1.nh ngha :

    Hibernate l framework nh x i tng-quan h rt ph bin cho ngn ng lp trnh Java

    v l thnh phn quan trng ca J2EE EJB (Enterprise Java Bean), c pht trin bi RedHat. Hibernate cho php nh x cc lp Java n cc bng trong c s d liu , cung cp truyvn trn c s d liu mt cch linh hot, cht ch. T lm gim ng k thi gian phttrin nhng vn m bo tin cy ca cc sn phm phn mm.

    Ngi ta gi cc lp Java ny l cc i tng persistence. Mt i tng c gi lpersistence khi n c to ra v lu li trong mt qu trnh x l no , khi qu trnh ktthc hay khi h thng thng tin shutdown th cc i tng ny khng b mt i m n clu li trn thit b lu tr di dng khc.

    Hibernate khng phi l gii php tt nht cho cc ng dng d liu trung tm , ni m ccchc nng ca ng dng c thc hin ch yu bng cch s dng cc stored-procedurec to ra ngay trong c s d liu m Hibernate thc s tr nn rt mnh trong cc ng

    dng hng i tng vi m hnh a tng (2-tier hay n-tier) .

    Hnh 2.1 - M hnh 3-tier

    Hibernate cho php trong sut persistence (kh nng lu d liu trc tip xung h qun trc s d liu thng qua cc i tng trong ngn ng lp trnh), t ng dng c thchuyn i qua bt k h qun tr c s d liu no. C th ni y l mt trong nhng immnh ca Hibernate.

    Hibernate c th s dng trong cc ng dng cho Swing, ng dng Servlet, JSP..hay ngdng J2EE s dng cc EJB session bean.

  • 7/22/2019 Maven - Hibernate - Spring

    10/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    10

    2.Kin trc ca Hibernate:

    Hnh 2.2Kin trc Hibernate s dng c Hibernate, chng ta phi to ra cc lp Java, mi lp l th hin ca mt

    bng c lu trong c s d liu. Hibernate s nh x cc thuc tnh ca lp vi cc ct cabng d liu. Nh , Hibernate c th thc hin cc php ton trn c s d liu nh select,insert, update v delete cc b trong bng thng qua cc cu truy vn.

    Nhn chung Hibernate bao gm 3 thnh phn chnh : Qun l kt ni : Cung cp qun l kt ni c s d liu mt cch hiu qu bi l kt ni c

    s d liu l mt cng on rt tn km v n yu cu chim nhiu ti nguyn m v ngkt ni. Qun l giao dch : Cung cp cho ngi s dng c th thc hin mt hay nhiu cu lnhtruy vn ti mt thi im. nh x i tng - quan h : L k thut cho php nh x t mt m hnh i tng nmt m hnh d liu hay ni cch khc l nh x t lp Java n bng d liu. 3.Tnh nng : Cung cp Hibernate Query Language : L ngn ng truy vn d liu kh mnh . N hunh rt ging vi SQL v c phn bit ch hoa ch thng loi tr tn ca cc lp Java vthuc tnh ca n.Cung cp Hibernate Criteria Query API : S dng to ra cc cu truy vn ng. y lmt trong nhng phng php vit cu truy vn m khng cn s dng n HQL. Cung cpy cc php chiu (projection), php kt (aggregation), truy vn lng nhau (subselects).H tr cho Eclipse bao gm nhiu plug-in nh trnh son tho XML cho vic nh x, truyvn c s d liu, c bit cung cp 2 k thut c tc dng gn nh tri ngc nhau. K thutth nht c tn gi schema reverse engineering , k thut ny cho php sinh m lnh cc itng Java, cc lp truy sut c s d liu(DAO Date Access Object), cc file cu hnhXML t gin ca c s d liu c trong h qu tr c s d liu. K thut th hai c tnschema forward engineering, k thut ny licho php pht sinh c s d liu t cc itng Java, cc file cu hnh XML. Vi hai k thut ny, ngi lp trnh s gim bt cthi gian vit m lnh cho vic cu hnh c s d liu mt cch th cng.

    Gim thi gian pht trin sn phm phn mm : Kh nng ti s dng m lnh do mangm tnh cht hng i tng ca ngn ng lp trnh Java nh cung cp tnh ng gi , ktha , a hnh...

  • 7/22/2019 Maven - Hibernate - Spring

    11/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    11

    Cung cp cc ton hng lm vic vi i tng persistence : create() , merge() , save() ,saveOrUpdate() , saveOrUpdateCopy() Hibernate XML mapping : L k thut nh x i tng quan h, trong thng tin vcc bng trong c s d liu c th c biu din trong cc file XML. y l k thut cs dng ph bin nht hin nay. u im ca phng php ny l lm cho h thng d botr, kh nng d dng thay i khi c s thay i trong c s d liu.

    Hibernate annotations : Cng l mt k thut nh x i tng quan h, trong thng tinv cc bng trong c s d liu c biu din ngay trongcc lp Java bng cch s dng ccannotation. Phng php ny c u im l d vit, nhng li lm cho h thng thm ri , t h thng s kh bo tr hn. Do vy, trn thc t t c s dng. Chng ta s tm hiu suhn v 2 k thut nh x ny trong nhng phn sau ca bi bo co.II.Cu hnh Hibernate :1.To kt ni c s d liu :

    Hibernate c th kt ni n c s d liu, chng ta phi cu hnh kt ni choHibernate. Thng thng, ngi ta thc hin trong mt file XML c tn l hibernate.cfg.xml.Mc nh, khi h thng khi ng, Hibernate s tm v c cc file ny thc hin kt nin h qun tr c s d liu.

    V d v mt file hibernate.cfg.xml :

    ${jdbc.driverClassName}${jdbc.url}${jdbc.username}${jdbc.password}${jdbc.databaseDialect}update/create/ create-drop true/false

    Trong :-${jdbc.driverClassName} : Driver ca h qun tr c s d liu m chng trnh s dng.Hin ti, Hibernate h tr lm vic trn hu ht cc h qun tr c s d liu nh MS SQL

    Server, Oracle, MySQL Server, DB2, Postgresql- com.mysql.jdbc.Driver- com.microsoft.jdbc.sqlserver.SQLServerDriver

    - oracle.jdbc.driver.OracleDriver- com.ibm.db2.jdbc.app.DB2Driver

    - org.postgresql.Driver-${jdbc.url} : a ch url ch n c s d liu.

    - jdbc:mysql://localhost:3306/ databaseName- jdbc:sqlserver://localhost:1433;databaseName=databaseName

    ;integratedSecurity=true;- jdbc:oracle:thin:@localhost:1525: databaseName

    - jdbc:db2:databaseName- jdbc:postgresql://localhost:5432/ databaseName-${jdbc.username} : Tn ng nhp vo h qun tr c s d liu.

  • 7/22/2019 Maven - Hibernate - Spring

    12/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    12

    -${jdbc.password} : Mt khu ng nhp vo h qun tr c s d liu.-${jdbc.databaseDialect} : Database Dialect ca h qun tr c s d liu. Ch cho Hibernate

    bit chng trnh mun lm vic trn h qun tr c s d liu no.Di y l danh sch ccdialect ph bin :

    DB2 - org.hibernate.dialect.DB2Dialect HypersonicSQL - org.hibernate.dialect.HSQLDialect Informix - org.hibernate.dialect.InformixDialect Ingres - org.hibernate.dialect.IngresDialect Interbase - org.hibernate.dialect.InterbaseDialect Pointbase - org.hibernate.dialect.PointbaseDialect PostgreSQL - org.hibernate.dialect.PostgreSQLDialect Mckoi SQL - org.hibernate.dialect.MckoiDialect Microsoft SQL Server - org.hibernate.dialect.SQLServerDialect MySQL - org.hibernate.dialect.MySQLDialect Oracle - org.hibernate.dialect.OracleDialect Oracle 9 - org.hibernate.dialect.Oracle9Dialect

    Progress - org.hibernate.dialect.ProgressDialect FrontBase - org.hibernate.dialect.FrontbaseDialect SAP DB - org.hibernate.dialect.SAPDBDialect Sybase - org.hibernate.dialect.SybaseDialect Sybase Anywhere - org.hibernate.dialect.SybaseAnywhereDialect

    -hibernate.hbm2ddl.auto: Cho php t ng to(create), cp nht(update) c s d liu khih thng khi ng hay to c s d liu khi khi ng ri xa khi h thng shutdown(create-drop) . Ch nn thn trng khi s dng create-drop. y l gi tr khng c khuyn khchs dng.-hibernate.show_sql: Cho php hin th tt c cu lnh truy vn trn c s d liu trong qutrnh lm vic vi ng dng hay khng. Tnh nng ny thng c s dng khi d n ang

    trong giai on pht trin, nh ta c th kim tra c chng trnh chy nh th no. Gitr mc nh ca thuc tnh ny l false.-Th mapping : Ch nh k thut nh x i tng quan h c s dng. V d trn sdng c hai phng php nh x c cp phn trn. Trong class - s dng kthut Annotations v resource - s dng k thut da trn cu hnh XML. Lp Project s lth hin ca bng Project trong c s d liu. Cn file pim.hbm.xml s cha ton b m hnhca c s d liu c biu din di dng XML.Ngoi nhng thuc tnh nu trn, Hibernate cn cung cp rt nhiu thuc tnh khc (c tnh

    c khong gn 60 thuc tnh khc nhau), trong c nhiu thuc tnh nng cao. Nhn chung,ty qui m, ty tnh cht ca d n phn mm m ta c th s dng cc thuc tnh ny. Nhngcc thuc tnh nutrong v d trn l nhng thuc tnh hay c s dng nht. tm hiu

    mt cch y v cc thuc tnh ca Hibernate, chng ta c th tham kho ti a chhttp://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.htmlNh vy, chng ta tm hiu xong vic cu hnh kt ni c s d liu trong Hibernate, tip

    sau y chng ta s i vo tm hiu chi tit cc k thut nh x i tng quan h, mt tnhnng then cht ca cng ngh Hibernate.2.Hibernate Object Relational Mapping - ORM :

    y l mt k thut cho php nh x th hin ca d liu t cc lp Java n cc bng dliu tng ng vi nhng lp . Nh vy, lp Java l i din cho bng d liu v cc thuctnh ca lp s i din cho cc ct ca bng.

    Ngi ta gi nhng lp Java ny l i tng persistence m ta bit nh ngha v n phn trn. Cc lp ny c cu trc thng thng ging vi Java Bean, i khi ngi ta cngi chng l Plain Old Java Object POJO. Gia lp Java v bng d liu c mi quan h rtcht ch, khi cu trc ca Java class thay i th ng ngha vi vic cu trc ca cc bng d

    http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.htmlhttp://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html
  • 7/22/2019 Maven - Hibernate - Spring

    13/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    13

    liu cng thay i theo, ng thi khi c s thay i trong c s d liu th cu trc cc lpJava cng phi thay i mt cch ph hp.

    Hnh 2.3ORM2.1)Hibernate XML mapping :Phng php nh x ny c thc hin trong mt hay nhiu file XML.a)nh x i tng - quan h :Gi s ta c mt POJO nh sau :

    public class Rank{private Long rankid;private String name;

    } nh x lp Rank n bng rank trong c s d liu ta to ra file rank.hbm.xml c ni

    dung nh sau :

    Sau thm vo file hibernate.cfg.xml :Kt qu thu c nh sau :

    Hnh 2.4 - Bng rank

  • 7/22/2019 Maven - Hibernate - Spring

    14/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    14

    b)Hiu r hn v ORM : v d trn, chng ta s dng file rank.hbm.xml nh x t i tng Rank n bng

    rank trong c s d liu. By gi chng ta hy tm hiu mi thnh phn ca file nh x ny.-mapping> : L phn t gc ca file Hibernate mapping. Gia thnh phn ny l

    cc th class.x lp i tng n thc th tng ng trong c s d liu. N ch ra rng

    bng no trong c s d liu s c truy cp v ct no trong bng s c s dng. Miphn t c th c mt hay nhiu phn t danh duy nht nh danh mt i tng. Trn thc t, phn t ny

    s nh x n ct kha chnh trong bng d liu.Phn t ny c cc thuc tnh sau :-name : Tn thuc tnh ca lp Java c s dng-column : Tn ct s dng lu gi tr kha chnh-type : Kiu d liu ca thuc tnh ca lp Java-unsaved-value : L thuc tnh quyt nh lp Java c c khi to hay cp nht bng dliu hay khng. Nu gi tr l null th c ngha i tng s khng nh hng bt c iu gn bng trong c s d liu khi h thng khi ng hay shutdown.

    d liu. Do cu trc ca mi h qun tr c s d liu khc nhau nn Hibernate cung cp mts gi tr s dng sinh kha chnh nh di y.

    -increment : c s dng sinh kha chnh kiu long, short hay int mt cch t ngtng dn khi khng c bt k tin trnh no ang thm d liu vo bng. V vy, khng nn sdng gi tr ny nu phn mm lm vic trong mi trng tp trung.

    -identity : H tr lm ct kha chnh cho DB2, MySQL, MS SQL Server, Sysbase vHypersonicSQL. Tr v gi tr kiu long, short hay int.

    -sequence : Hibernate c kh nng s dng tun t sinh kha chnh. Gi tr ny thngc s dng khi lm vic vi Oracle, Postgresql, DB2.

    -assigned : Khi s dng gi tr ny, mi ln thm vo bng b mi, chng ta phi ch nhgi tr cho kha chnh mt cch tng minh.-native : Cho php chn identity hay sequence mt cch linh ng ty thuc vo h qun trc s d liu bn di.

    nh x chng n cc ct trong bng d liu.c)Biu din cc mi quan h :

    trn l minh ha cch nh x mt lp Java n mt bng trong c s d liu mt cch ngin nht. Nhng trn thc t, gia cc bng thng c mi quan h ln nhau. Vy lm sao

    biu din cc mi quan h ? Hibernate cung cp mt cch y cho chng ta thc hincng vic ny. Sau y l cch biu din cc mi quan h bng XML.

    -N hoc N-1:

    public class Project{private Long projectid;private String name;private Set tasks = new HashSet(0);

    }

    Project Task

    1-N 1-1Has

  • 7/22/2019 Maven - Hibernate - Spring

    15/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    15

    Hnh 2.5 - Bng projectpublic class Task{

    private Long taskid;private String name;private Project project;

    }

    Hnh 2.6 - Bng task-1:

    public class Employee{private Long employeeid;private String name;private Account account;

    }

    Employee Account

    1-1 1-1

    HasA

  • 7/22/2019 Maven - Hibernate - Spring

    16/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    16

    Hnh 2.7 - Bng employeepublic class Account{

    private Long accountid;private Employee employee;private String loginname;private String password;

    }

    Hnh 2.8 - Bng accountMi quan h N-N :

    Trng hp mi kt hp nh phn :

    public class Project{private Long projectid;private String name;private Set employees = new HashSet(0);

    }

    Project Employee1-N 1-N

    Has

  • 7/22/2019 Maven - Hibernate - Spring

    17/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    17

    public class Employee{private Long employeeid;

    private String name;private Set projects = new HashSet(0);

    }

    Hnh 2.9 - Bng kt hp ca project & employeeKt qu ca mi quan h trn l mt bng th 3 c kha chnh bao gm 2 kha chnh ca

    bng project v bng employee kt hp li.Trng hp mi kt hp a phn :

    Project Employee1-N 1-N

    Has

    Function

    1-N

  • 7/22/2019 Maven - Hibernate - Spring

    18/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    18

    public class EmployeeFunctionInProject{private EmployeeFunctionInProjectId id;private Employee employee;private Project project;private Function function;

    }public class EmployeeFunctionInProjectId{private long functionid;private long projectid;private long employeeid;

    }

    Tng t ta thu c :

    Hnh 2.10 - Bng employeefunctioninprojectChng ta va tm hiu k thut nh x i tng quan h bng phng php s dng

    XML. Tip sau y s l ni dung ca phng php nh x bng cch s dng ccannotations.2.2) Hibernate Annotations Mapping:

    a)nh x i tng - quan h :Cc annotations lun bt u bng @Entity , y l du hiu Hibernate phn bit cc lp

    persistence vi cc lp bnh thng khc. Sau y l mt s annotation thng c s dng.-@Entity : Khai bo mt lp Java c xem nh l mt i tng persistence

    -@Id : Khai bo thuc tnh xc nh cho lp, thuc tnh ny s l kha chnh trong bng dliu.

  • 7/22/2019 Maven - Hibernate - Spring

    19/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    19

    -@GeneratedValue : nh ngha cc kiu sinh gi tr cho kha chnh. C 4 kiu chnh AUTO,IDENTITY, SEQUENCE, TABLE.

    AUTO : Cho php la chn mt cch linh hot IDENTITY, SEQUENCE, TABLE phhp vi cc h qun tr c s d liu. -@Table : Khai bo bng d liu-@Column : Khai bo ct trong bng d liu

    -@Version : Khai bo mt ct c bit trong bng d liu. Ct ny c tnh cht mi ln cmt hnh ng lm thay i d liu trn b cha n th gi tr ca n s tng ln 1 n v. ngha ca n l lm trnh vic cp nht d liu ng thi (concurrent update) trn d liu. Khi

    bt u thc hin giao dch, gi tr ct version ca b s c c v lu li trong b nh.Trng hp khi c nhiu giao dch ang xy ra trn d liu, mt giao dch ny lm cho 1 bno trongbng b thay i, khi version ca b s t ng tng ln 1 n v, nu mtgiao dch khc mun cp nht record th s khng thnh cng. Bi v vic cp nht d liuch cho php khi version lu trong b nh v trong c s d liu phi bng nhau.K thutny cn c gi vi ci tn khc l Optimistic Locking. Tri ngc vi Optimistic Lockingl Pessimistic Locking, k thut ny khng cho php mt giao dch c thc hin khi angc mt giao dch khc ang thc hin. Cho n khi giao dch hin ti thc hin hon tt th

    cc giao dch khc vi thc hin c.-@Transient : Ch ra rng thuc tnh khng phi l persistence. Nu mun mt thuc tnh noca lp Java s khng xut hin trong bng ca c s d liu th phi t @Transient trcthuc tnh .- @UniqueConstraint : Rng buc unique-@CheckConstraint : Rng buc check-@OneToOne : Dng k lin kt cc thc th s dng mi quan h 1-1-@OneToMany : Dng k lin kt cc thc th s dng mi quan h 1-N-@ManyToOne : Dng k lin kt cc thc th s dng mi quan h N-1-@ManyToMany : Dng k lin kt cc thc th s dng mi quan h N-N-@JoinColumn : Ch nh ct tham gia vo mi kt hp-@JoinTable : Ch nh bng kt qu ca mi kt hp gia cc thc th

    minh ha cch nh x , chng ta s s dng li cc lp POJO phn trn.@Entity@Table(name =rank)

    public class Rank{@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name =rankid, nullable = false, updatable = false)

    private Long rankid;@Column(name=name , length =100 , nullable = false)

    private String name;}b)Biu din cc mi quan h :

    -N hoc N-1:

    @Entity@Table(uniqueConstraints = {@UniqueConstraint(columnNames = {number, })})

    public class Project{@Id@GeneratedValue(strategy = GenerationType.IDENTITY)

    Project Task

    1-N 1-1

    Has

  • 7/22/2019 Maven - Hibernate - Spring

    20/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    20

    @Column(nullable = false, updatable = false)private Long projectid;@Column(nullable = false)

    private int number;@Column(length =100 , nullable = false)private String name;

    @OneToMany(mappedBy=project)private Set tasks = new HashSet(0);

    }Ta s dng @UniqueConstraint vi ct number mi d n s c mt m s duy nht.

    Thuc tnh mappedBy ch ra i tng no l owner ca mi quan h.@Entity

    public class Task{@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column( nullable = false, updatable = false)

    private Long taskid;@Column(length =100 , nullable = false)

    private String name;@ManyToOne@JoinColumn(name = "projectid", nullable = false)

    private Project project;

    }-1:

    @Entitypublic class Employee{

    @Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column( nullable = false, updatable = false)

    private Long employeeid;@Column(length =100 , nullable = false)

    private String name;@OneToOne(mappedBy=employee)

    private Account account;}@Entity

    public class Account{@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column( nullable = false, updatable = false)

    private Long accountid;@OneToOne@JoinColumn(name=employeeid,unique=true)

    private Employee employee;@Column(length =100 , nullable = false)private String loginname;

    EmployeeAccount

    1-1 1-1

    HasA

  • 7/22/2019 Maven - Hibernate - Spring

    21/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    21

    @Column(length =100 , nullable = false)private String password;

    }

    Mi quan h N-N :Trng hp mi kt hp nh phn :

    @Entitypublic class Project{

    @Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column( nullable = false, updatable = false)

    private Long projectid;@Column(length =100 , nullable = false)

    private String name;

    @ManyToMany@JoinTable(name = "projectemployee",joinColumns = { @JoinColumn(name ="projectid") },inverseJoinColumns = { @JoinColumn(name ="employeeid") })

    private Set employees = new HashSet(0);

    }@Entity

    public class Employee{@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column( nullable = false, updatable = false)

    private Long employeeid;@Column(length =100 , nullable = false)

    private String name;@ManyToMany(cascade = CascadeType.ALL)@JoinTable(name = "projectemployee",joinColumns = { @JoinColumn(name ="employeeid") },inverseJoinColumns = { @JoinColumn(name ="projectid") })

    private Set projects = new HashSet(0);

    }Trng hp mi kt hp a phn :

    public class EmployeeFunctionInProjectId{

    private long functionid;private long projectid;private long employeeid;

    Project Employee1-N

    1-NHas

    Project Employee1-N 1-N

    Has

    Function

    1-N

  • 7/22/2019 Maven - Hibernate - Spring

    22/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    22

    }@Entity@IdClass(EmployeeFunctionInProjectId.class)

    public class EmployeeFunctionInProject{@EmbeddedId

    private EmployeeFunctionInProjectId id;@ManyToOne@JoinColumn(name = "employeeid", nullable = false)

    private Employee employee;@ManyToOne@JoinColumn(name = "projectid", nullable = false)

    private Project project;@ManyToOne@JoinColumn(name = "functionid", nullable = false)private Function function;

    }Tt c kt qu m chng ta thu c u ging nh trng hp s dng XML.Nh vy, n y chng ta tm hiu qua k thut ORM trong Hibernate. Trong phn tip

    theo, chng ta s tm hiu cch Hibernate lm vic vi c s d liu thng qua ngn ng tru yvn HQL v ngn ng truy vn theo tiu chun.III.Hibernate Quyery Language - HQL:

    1.nh ngha :y l ngn ng truy vn d liu m Hibernate s dng thc hin cc giao dch ca

    ngi s dng. V c php th phn ln rt ging SQL, nhng im khc bit l HQL s dnglp v thuc tnh thay cho bng v tn ct. V vy , HQL cung cp tnh a hnh, k tha v trm r hn SQL.

    Nhng u im ca HQL : Cho php th hin cc cu truy vn SQL di dng cc i tng. Thay v tr v kt qu di dng th, cu truy vn HQL tr v kt qu truy vn di dngi tng hoc b i tng ng dng d dng s dng v thao tc cc hnh ng trn cci tng ny. Cung cp y cc truy vn a hnh. iu c ngha l cng vi i tng c tr vtrong kt qu truy vn th tt c i tng c lin quan n i tng cng s c tr v. L ngn ng d hc v d thc thi trong cc ng dng bi v c php v tnh cht rt gingSQL. Cung cp y cc tnh nng ging nh SQL: inner join, outer join, cc php chiu, php

    kt, cc hm tnh gp nh avg,max,sum D dng to ra cc truy vn c lp s dng kiu d liu hon ton c lp vi kiu d liutrong h qun tr c s d liu bi v cung cp c ch chuyn i kiu d liu ngn ng lptrnh sang kiu d liu database trong qu trnh thc thi.

    Nhc im : tc thc thi chm hn SQL v phi tri qua giai on chuyn i t HQLsang SQL.2.Thc hin truy vn c s d liu :

    Hibernate thc hin cc giao dch bng mt i tng c bit l i tng Session.Vng i ca Session ny bt u t lc bt u giao dch v kt thc khi giao dch kt thc.i tng Session ny c to ra t i tng SessionFactory .

  • 7/22/2019 Maven - Hibernate - Spring

    23/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    23

    Hnh 2.11 - M hnh kt ni trong HibernateChc nng c th ca Session l khi to, c, xa ,cp nht cc thc th nh x bi lp

    Java trong c s d liu.a)Cc bc thc hin mt giao dch trong HQL :

    +Trng hp s dng XML mappingSessionFactory sf = new Configuration().configure().buildSessionFactory();

    +Trng hp s dng annotationSessionFactory sf = new

    AnnotationConfiguration().configure().buildSessionFactory();Ch : C 2 cu lnh trn s t ng tm v c file hibernate.cfg.xml thc thi

    Session session = null;Bc 3 : M session

    session =sf.openSession();c 4 : M giao dch

    Transaction tr = sess.beginTransaction();n cc thao tc

    String sql = Query query = session.createQuery(sql);List results = query.list();

    Nh vy kt qu tr v ca tt c cc cu truy vn l mt danh sch.

    tr.commit();c 7 : ng session

    session.flush();session.close();b)Cch vit cu truy vn HQL :Mnh FROM :

    C php : from object[as object_alias]V d : from Project as p hoc from Project pCu truy vn trn s ly ton b cc record c trong bng project.

    Mnh SELECT :C php : select [object.]propertyV d : select p.name from Project p

    Mnh WHERE :

    C php : where conditionV d : select p from Project p where p.status.name =finishedCu truy vn s ly ra danh sch nhng d n c trng thi l finished

  • 7/22/2019 Maven - Hibernate - Spring

    24/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    24

    Mnh INSERT ,UPDATE, DELETE:i vi vic thm, xa, sa d liu, thay v phi vit cu lnh nh SQL th Hibernate h

    tr sn mt s phng thc trong session thc hin cng vic ny.C php :

    session.save(object);session.saveOrUpdate(object);

    session.update(object);session.delete(object);V d :

    Project project= new Project();project.setNumber(100);project.setName(Helios);project.setCustomer(ABC);project.setStatus(Finished);project.setStartDate(new Date(1/1/2010);project.setEndDate(new Date(1/10/2011);session.save(project);

    Task task = session.get(Task.class,taskId);task.setStatus(resolved);session.update(task);User user = session.get(User.class,userId);session.delete(user);

    Mnh ORDER BY :C php : order by object0.property0[asc|desc][,object1.property0]...

    Mnh GROUP BY :C php : group by object0.property0[,object1.property0]...

    Cc mnh tnh gp :count( [ distinct | all ] object | object.property )count(*)sum ( [ distinct | all ] object.property)avg( [ distinct | all ] object.property)max( [ distinct | all ] object.property)min( [ distinct | all ] object.property)

    Php kt trong Hibernate : Hibernate cung cp 4 loi kt sauo inner joino left outer joino right outer joino full join (t c s dng trong thc t)

    V d : select projectfrom Project as project inner join project.customer as customerwhere customer.name='ABC'

    Cu truy vn trn s ly danh sch cc d n mkhch hng tn l ABC.Tuy nhin, HQL t ra khng hiu qu trong cc truy vn a tiu chun - Multi Criteria

    Search. khc phc, Hibernate cung cp thm mt phng php truy vn khc, phngphp truy vn s dng cc hm th vin Hibernate Criterial Query API. Chng ta s tm hiuphng php ny ngay trong phn tip theo.

  • 7/22/2019 Maven - Hibernate - Spring

    25/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    25

    IV. Hibernate Criteria Query :

    1.nh ngha :Criterial Query cho php to v thc thi cc cu truy vn ng hng i tng. N c th

    thay th cho HQL trong cc cu truy vn a tiu chun. Khi m HQL khng thc s t ra chiu qu trong cc loi cu truy vn ny.2.Cch vit cu truy vn :

    Cc bc vit cu truy vn khi s dng Hibernate Criteria Query cng ging nh cc bcvit cu truy vn HQL. Sau y l bc thc hin cc thao tc vi Hibernate Criteria Query.V d :

    Criteria crit = session.createCriteria(Project.class);List projects = crit.list();

    Cu truy vn trn s ly ton b cc record c trong bng project v tr v mt danh sch.Interface Criteria cn h tr cc phng thc cho vic thc hin cc tnh nng lin quan n

    vic phn trang (pagination). Trong ch n 2 phng thc bn di y :crit.setFirstResult(int arg0);//Ch nh v tr record bt u s c a vo kt qu. crit.setMaxResults(int arg0);//Ch nh s lng ti ta cc record s c mt trong kt qu.

    Ngoi ra cn cung cp distinct d liu thu c :

    crit.uniqueResult(); gii hn kt qu tr v ca cu truy vn, interface Criteria c h tr thm phng

    thc add vi tham s l iu kin trch rt.C php : add(Criterion arg0)

    Nh vy, mi iu kin c xem l mt i tng Criterion.mt

    hay nhiu iu kin no .V d :

    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");Criteria crit= session.createCriteria(Project.class);crit.add(Restrictions.like("name", "%abc%"))

    .createAlias("customer", "customer")

    .add(Restrictions.eq("customer.name",xyz"))

    .add(Restrictions.between("startdate", df.parse(2011-1-1), df.parse(2011-12-12)));

    Cu truy vn trn s ly ra cc d n c chui k t abc trong tn d n, c khch hngtn l xyz, c ngy bt u nm trong khong t ngy 2011-1-1 n ngy 2011-12-12.

    Khng nhng th, lp Restrictions cn h tr nhiu phng thc khc, bao gm nhiu phpton so snh (>, >=,

  • 7/22/2019 Maven - Hibernate - Spring

    26/75

    BO CO THC TP TT NGHIP I HC CHNG IIHIBERNATE FRAMEWORK

    26

    Bn cnh h tr vic thc hin php chiu, Hibernate cn tch hp c cc hm thng k(min, max, sum, avg, count) vo trong lp Projections.C php : Projections.min|max|sum|avg|count(propertyName)V d :Criteria crit= session.createCriteria(Project.class);

    crit.setProjection(Projections.max("number"));

    Cu truy vn trn s ly ra d n c number ln nht.g qua phng thc createAlias()Criteria crit= session.createCriteria(Project.class);crit.createAlias("customer", "customer")

    .add(Restrictions.eq("customer.name", "abc"))

    .createAlias("group", "group")

    .createAlias("group.leader", "leader")

    .add(Restrictions.eq("leader.visa", "xyz"));Trong customer l mt thuc tnh kiu i tng Customer ca lp Project.Cu truy vn trn s tr v danh sch nhng d n c khch hng c tn l xyz , c groupleader vi visa l xyz.

    Criteria crit= session.createCriteria(Project.class);crit.setProjection( Projections.groupProperty("customer")).addOrder( Order.asc("number") );

    Cu truy vn trn s tr v danh sch nhng d nc gom nhm theo khch hng vc sp xp theo chiu tng dn ca number.

    n y, chng ta tm hiu xong nhng vn c bn ca Hibernate framework. Trongphn tip theo, chng ta s tip tc nghin cu mt trong nhng framework ni ting strong Java na l Spring MVC framework. C th ni s kt hp gia Hibernate v SpringMVC trong cc d n phn mm l s kt hp tuyt vi. Nu nh Hibernate l cng c qunl c s d liu th Spring MVC li l cng c s dng kt qu cacc truy vn n d liu .

  • 7/22/2019 Maven - Hibernate - Spring

    27/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    27

    CHNG III SPRING MVC FRAMEWORK

    I.Tng quan v Spring :1.nh ngha :

    Spring l mt open source framework c to ra bi Rod Johnson v c th hin trongcun sch Expert One-on-One: J2EE Design and Development ca chnh tc gi. Spring

    c sinh ra nhm hng vo vic pht trin cc ng dng thng mi phc tp. Spring cth lm rt nhiu th bi y l mt framework rt s, nhng nu tri Spring thnh tng

    phn c bn th Springl mt lightweight, dependency injection, aspect-oriented container vframework. Lightweight : kch thc ca Spring c th c tp trung trong cc file jar c kch thcch khong 2.5MB. Dependency injection : Spring xng loose coupling tc l s ghp ni lng gia cci tng thng qua mt k thut gi l Dependency Injection (DI). Thut ng loosecoupling c ngha rng cc i tng khng tht s cn bit v s nh ngha ca cc itng khc mc d gia chng c mi lin quan vi nhau. Khi p dng k thut ny, cc itng c s truyn (hay tim) s ph thuc thay v phi to ra v tm kim cc i tng

    ph thuc cho chng. lm vic ny,Spring xy dng mt i tng Spring Container,chnh i tng ny s a s ph thuc vo i tng khi m i tng c sinh ra mkhng cn phi ch c yu cu. Aspect-oriented : Spring mang n s h tr y cho Aspect-oriented Programing AOP. y l mt cch lp trnh mi, xut hin sau lp trnh OOP. Trong kiu lp trnh n ycho php chng ta thc hin cc vn ring bit mt cch linh hot v kt hp chng li to nn h thng sau cng.Phng php ny to iu kin thun li cho bo tr v kim tra

    phn mm. Container : Spring cha ng, qun l vng i v cu hnh cc i tng ca ng dng.Trong Spring, chng ta c th nm r cc i tng ca ng dng c to ra nh th no,cc i tng c cu hnh ra sao v mi quan h gia cc i tng chng.

    Hnh 3.1 - Spring ContainerTrong cc ng dng da trn Spring. Cc i tng ca ng dng c cha trong Spring

    container. Container to ra cc i tng, lin kt chng li vi nhau ( chnh l DI ), cu hnhv qun l vng i ca chng. Framework : Spring c to ra nhng ng dng phc tp bng cc thnh phn n gin.Trong Spring, cc i tng thng c khai bo trong file XML. Spring cng cung cpnhiu chc nng c s h tng nh qun l giao dch, kh nng tch hp vi cc frameworkkhc.

  • 7/22/2019 Maven - Hibernate - Spring

    28/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    28

    2.Kin trc Spring :Di y l cc module ca Spring :

    Hnh 3.2 - Kin trc Spring frameworkCore : L module c bn ca Spring. Module ny cung cp cc chc nng ch yu ca

    Spring framework. Trong module ny cha ng BeanFactory, y l container quan trngca Spring, v l ngun gc ca k thut DI.Application context: Module ny xy dng trn container core. Nu BeanFactory th hintnh container ca Spring th Application context li th hin tnh framework. Khng nhngk tha t BeanFactory, module ny cn c trang b thm nhiu tnh nng nhmutilanguagel (a ngn ng), chc nng xc thc cho ng dng.AOP : Cung cp y cho Aspect-oriented programmingDAO : Vit tt ca data access object ,cung cp cc m lnh theo khun dng to kt ni,cu lnh, x l kt qu truy vn, v sau ng cc kt ni.ORM(Object-relational mapping) : Cho php chuyn i d liu gia cc kiu h thngkhc nhau. K thut ny cho php to ra mt i tng c s d liu o c th s dng trong

    cc ngn ng lp trnh.JMX(Java Management Extensions) : Module ny th hin ton b qu trnh hot ng

    bn trong ng dng, iu lm cho chng trnh c qun l v cu hnh li mt cch ddng.JCA(Java EE Connector API) : Cung cp k thut cho php hp nht cc ng dng Java tnhiu h thng thng tin, nhiu c s d liu v server khc nhau.Spring MVC : Cung cp phng php xy dng cc ng dng theo m hnh MVCPortlet MVC : Cc ng dngweb thng da trn nn l cc trang web, mi yu cu nng dng s c hin th kt qu ln mt trang mi. Portlet MVC cho php th hin nhiuchc nng ca ng dng ch trn mt trang web (single web page).Web: Cung cp cc class c bit cho Spring MVC v Portlet MVC cho php uploadnhng multipart file . Ngoi ra, module ny cn c tch hp nhiu cung cp cho ccframework opensource khcRemoting: cc ng dng khc nhau c th lin kt vi nhau trong qu trnh hot ng .c bit khi cc ng dng truy cp mng , cc Remoting s c s dng lm nhim vtruyn.JMS (Java Message Service): Cung cp cc chc nng cho dch v tin nhn ,trong tinnhn s c a vo hng i gi i nhm tng tc thc thi.

    Cc module ny c th cung cp cho chng ta rt nhiu chc nng xy dng bt k mtng dng thng mi no. Nhng khng v th m chng ta da tt c vo Spring. Chng tahon ton c th t do la chn nhng module ph hp vi ng dng v tm kim nhng h

    tr khc, nhng h tr m Spring khng p ng yu cu.Trong khun kh ca bi bo co ny, chng ta s cng nhau nghin cu v MVC module.

  • 7/22/2019 Maven - Hibernate - Spring

    29/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    29

    II.Gii thiu Spring MVC framework :1.Khi qut :

    Spring MVC l mt trong nhng module quan trng ca Spring framework. K tha nhngu im ca Spring v n tr thnh mt trong nhng framework ni ting trong pht trincc ng dng web.

    MVC l vit tt ca Model View - Controller. M hnh MVC l mt trong nhng kin

    trc ph bin trong lnh vc cng ngh phn mm. M hnh ny c minh ha trong hnhbn di :

    Hnh 3.3 - M hnh MVC+Model : Chu trch nhim qun l cc chc nng v qun l d liu ca ng dng, tr licho cc yu cu v thng tin ca n t View, tr li cho cc yu cu thay i trng thi ca nt Controller .+View : Hin th Model cho user+Controller : Nhn input t user v tr li yu cu cho user bng cch to ra cc li gi nModel .2. c tnh ca Spring MVC :Phn cch hon ton cc vai tr trong ng dng : Vic phn cch cc vai tr trong ng dngs lm gim phc tp, chng trnh d qun l, t lm tng tin cy ca ng dng.Cu hnh n gin : Thc hin trong cc file XML.

    Pluggable View : y l k thut cho php Spring MVC c th lm vic vi nhiu cngngh nh JSP,Tiles, Velocity Kh nng s dng li m ngun Dependency Injection : Lm cho tit kim cc on code ging nhau v vic vit code s chiu qu hn.3.Thnh phn ca Spring MVC :Model : c th hin qua lp ModelMap. Thng c Spring dng nm gi d liu .

    Ngoi ra, Spring cn bao bc c cc d liu chc nng vo trong class ny v truyn chngn View.View : c th hin qua lp ModelAndView.View c th lm vic vi JSP, Tiles,Velocity, Jasper

    Controller: Chu trch nhim thu nhn tt c cc request t user v x l request thngqua s h tr t Model. tip cn vi Spring MVC, chng ta hy bt u vi v d Hello world sau y.

    4.Chng trnh Hello World :Dependency injection DI l iu c bn nht m Spring lm. Nhng nh th no l DI?

    Chng ta s bt u bng chng trnh Hello World bit c Spring lm vic nh thno.

    Lp u tin l mt lp dch v, m nhn trch nhim in ra mt cu cho hi quen thuc.Lp ny c nh ngha mt cch ngn gn thng qua mt interface.public interfaceGreetingService{

    void sayGreeting();}

  • 7/22/2019 Maven - Hibernate - Spring

    30/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    30

    public classGreetingServiceImplimplements GreetingService{private String greeting;public GreetingServiceImpl() {}public GreetingServiceImpl(String greeting) {

    this.greeting = greeting;}

    public void sayGreeting() {System.out.println(greeting);}

    public void setGreeting(String greeting) {this.greeting = greeting;

    }}

    Lp GreetingServiceImplc duy nht mt thuc tnh l greeting. Thuc tnh ny n ginch l mt chui k t s gi ni dung ca mt thng ip s c in ra khi ta gi phngthc sayGreeting(). V ch rng greeting c th c thit lp bng 2 cch : constructorhoc setter method. Chng ta s Spring container thit lp gi tr cho thuc tnh ny. File

    cu trnh Spring c tn hello.xml di y s ch ra lm th no cu hnh cho greetingservice :

    File XML ny khai bo mt thc th ca GreetingServiceImpl trong Spring container v

    thit lp gi tr cho thuc tnh greeting l Hello World!. Hy tm hiu su vo file XML ny bit c chng lm vic ra sao.

    Ti gc ca file cu trnh XML l phn t . N bao bc cc phn t v cng l phn t gc ca bt k file cu hnh Spring no. Phn t c s dng choSpring container bit v mt lp v lp s c cu hnh nh th no. y, thuc tnh idc s dng t tn cho phn t bean v class l thuc tnh ch nh tn lp y ca

    bean . Trong phm vi phn t l phn t , s dng thit lp gi trthuc tnh, c th y l thuc tnh greeting. Nh thy trn, phn t ny chcho Spring container gi phng thc setGreeting() v truyn gi tr Hello World! khi phn

    t bean ny c khi to.on trch trn cho thy rng Spring container lm nhng g khi khi to greeting serviceda vo nh ngha XML.

    GreetingServiceImpl greetingService = new GreetingServiceImpl();greetingService.setGreeting("Hello World!");

    Chng ta cng hon ton c th chn Spring container thit lp gi tr cho greeting thngqua contsructor nh sau :

    on m sau y s ch ra cch container khi to gi tr cho greeting service thng qua

    phn t :GreetingService greetingService = new GreetingServiceImpl("Hello world !");

    http://www.springframework.org/schema/beans/spring-beans-2.0.xsdhttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  • 7/22/2019 Maven - Hibernate - Spring

    31/75

  • 7/22/2019 Maven - Hibernate - Spring

    32/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    32

    2.Lm vic vi ApplicationContext :Mt BeanFactory th lm vic tt i vi nhng ng dng n gin, nhng li dng

    c ht sc mnh ca Spring chng ta nn load cc bean ca ng dng bng container caocp hn : ApplicationContext.

    Nh cp phn trn, ApplicationContext hu nh rt ging vi BeanFactory , c haiu load nh ngha v bean, lin kt chng li vi nhau, phn pht chng khi c yu cu.

    Nhng ApplicationContext c th lm hn th na :-Kh nng gii quyt vn a ngn ng cho ng dng thng qua cc file properties-Cung cp mt phng php chung load cc file resource, bao gm c file image-Xut bn cc s kin(Events) n cc bean thng qua vic ng k vi cc my

    nghe(Listeners).Bi cc tnh nng b tr , ApplicationContext c s dng hu nh tt c cc ng

    dng da trn Spring. C l, ch c mt ln chng ta c th xem xt n vic s dngBeanFactory trong hon cnh khi m resource b khan him, chng hn i vi cc mobiledevice.

    Gia rt nhiu thc hin ca ApplicationContext, c 3 loi thng c s dng :+ ClassPathXmlApplicationContext : Load nh ngha v context trong mt file XML c

    cha ng trong classpath(thng thng l cc file jar)ApplicationContext context =

    new ClassPathXmlApplicationContext("foo.xml");+ FileSystemXmlApplicationContext : Load nh ngha v context trong mt file XML c

    cha ng trong thit b lu tr ca h thngApplicationContext context =

    new FileSystemXmlApplicationContext("c:/foo.xml");+XmlWebApplicationContext : Load nh ngha v context trong mt file XML nm trong

    phm vi ng dngApplicationContext context =

    new XmlWebApplicationContext ("foo.xml");3. Lm vic vi cc Spring Bean:

    3.1.To mt bean n gin : cho d hiu hn v bean, chng ta hy i vo mt v d vui sau y. Chng ta c mt

    interface Performer i din cho nhng ngitham gia vo mt cuc thi biu din.public interfacePerformer{

    void perform() throws PerformanceException;}V sau y s l th sinh u tin n t Juggler c mang tn Duke.

    public classJugglerimplementsPerformer{private int beanBags = 3;

    public Juggler() {}public Juggler(int beanBags) {this.beanBags = beanBags;

    }public void perform() throws PerformanceException {

    System.out.println("JUGGLING " + beanBags + " BEANBAGS");}

    }Chng ta s khai bo Duke trong file cu hnh Spring idol.xml :

    V bn cht, duke c to ra bng vic s dng on m lnh Java sau y :new Juggler();

    V sau y l phn biu din ca duke :ApplicationContext ctx = new ClassPathXmlApplicationContext(" idol.xml");Performer performer = (Performer) ctx.getBean("duke");

  • 7/22/2019 Maven - Hibernate - Spring

    33/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    33

    performer.perform();Kt qu in ra : JUGGLING 3 BEANBAGS

    3.2.DI thng qua phng thc khi to :Cng vi lp Juggler trn, ta hy khai bo duke thng qua vic s dng constructor :

    Phn t c s dng cung cp thm thng tin cho Spring khi xydng bean. Nu khng c phn t no c khai bo th phng thc khito mc nh s c s dng.

    By gi, hy xem Duke trnh din, kt qu c in ra : JUGGLING 15 BEANBAGSTrng hp ta mun tham chiu n i tng thng qua phng thc khi to nh v d

    bn di.public classPoeticJugglerextendsJuggler{

    private Poem poem;public PoeticJuggler(Poem poem) {

    super ();

    this.poem = poem;}

    public PoeticJuggler(int beanBags, Poem poem) {super(beanBags);this.poem = poem;

    }public void perform() throws PerformanceException {

    super.perform();poem.recite();

    }}

    public interfacePoem{void recite();

    }public class Sonnet29implementsPoem{

    private static String[] LINES = {"A","B","C"};public Sonnet29() {}public void recite() {

    for (int i = 0; i < LINES.length; i++) {System.out.println(LINES[i]);

    }

    }}

    Trong phn t th hai ta khng th truyn vo mt gi tr nh bn trn

    c bi v khng phi l kiu d liu n gin.Thay vo , ta s dng ref ch ra rnggi tr c truyn vo s tham chiu n mt bean khc thng qua ID ca bean .Hy xem m lnh Java tng ng :

    Poem sonnet29 = new Sonnet29();Performer duke = new PoeticJuggler(15, sonnet29);

  • 7/22/2019 Maven - Hibernate - Spring

    34/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    34

    3.3.DI thng qua phng thc setter :public classInstrumentalistimplementsPerformer{

    public Instrumentalist() {}public void perform() throws PerformanceException {

    System.out.print("Playing " + song + " : ");instrument.play();

    }private String song;public void setSong(String song) {

    this.song = song;}

    private Instrument instrument;public void setInstrument(Instrument instrument) {

    this.instrument = instrument;}

    }public interfaceInstrument{

    void play();}

    public class SaxophoneimplementsInstrument{public Saxophone() {}public void play() {

    System.out.println("TOOT TOOT TOOT");}

    }

    Nh vy, vi cch khai bo trn, ngoi kenny c th s dngbean saxophone th cc thnh

    vin khc cng c th s dng n khi cn.3.4.Inner beans :

    Trong ngn ng lp trnh Java, c l chng ta qu quen thuc vi khi nim inner class.Spring cng cung cp k thut tng t nhng vi tn gi khc l inner bean, mt loi beanc nh ngha bn trong mt bean khc.

    Cch khai bo ny cho ta kt qu hon ton ging vi khai bo trn. Nhng ch c duy

    nht kenny mi c th s dng bean Saxophone nym thi. Ch rng, mt inner beankhng c thuc tnh ID. Inner bean khng cung cp kh nng s dng v chia s m lnh, chc s dng cho duy nht mt bean khc. cng l nhc im ca loi bean ny.3.5.DI trong Java Collections :C 4 kiu Java Collection c th khai bo trong file cu hnh Spring thng qua XML bao gm, , , .

    public classOneManBandimplementsPerformer{public OneManBand() {}public void perform() throws PerformanceException {

  • 7/22/2019 Maven - Hibernate - Spring

    35/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    35

    for(Instrument instrument : instruments) {instrument.play();

    }}

    private Collection instruments;public void setInstruments(Collection instruments) {

    this.instruments = instruments;}}

    Lists :

    Phn t c thbao gm mt hay nhiu gi trv cc gi tr ny c th trng nhau. y phn t c s dng tham chiu n mt bean khc. Phn t c th sdng cho bt k thuc tnh no l thc thi ca java.util.Collection hay thm ch l mt mng. Hay ni cch khc, phn t vn lm vic khi thuc tnh instruments c khai bo nh

    java.util.List instruments;Thm ch l Instrument[] instruments;Sets :

    Bt k ni no s dng th cng c th s dng . Nhng c mt hiu ng

    l ha ch m khng c l cc gi tr trong phi l duy nht. th hin iu, di y l mt cch khai bo mi s dng thay th cho :

    Trong khai bo trn, thuc tnh instruments tham chiu n 2 bean harmonica, nhng do

    chng ta s dng nn mt bean harmonica s b b qua.

  • 7/22/2019 Maven - Hibernate - Spring

    36/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    36

    Maps :public classOneManBandimplementsPerformer{

    public OneManBand() {}public void perform() throws PerformanceException {

    for (String key : instruments.keySet()) {System.out.print(key + " : ");

    Instrument instrument = instruments.get(key);instrument.play();}

    }private Map instruments;public void setInstruments(Map instruments) {

    this.instruments = instruments;}

    }

    Mi phn t khai bo l mt gi tr kiu java.util.Map. Mi phn t l mt

    thnh vin ca . Thuc tnh key l key ca entry, v value -ref l thuc tnh tham chiun mt bean khc trong container.

    Mc d trong v d trn, ta s dng thuc tnh key ch nh mt String v value-ref chnh mt gi tr tham chiu, phn t thc t cn c hai thuc tnh ch nh cho keyv valua ca entry na. Tt c cc thuc tnh c lit k trong bng di y.

    Thuc tnh Mc chKey Ch nhkey nh l mt StringKey-ref Ch nh key nh l mt tham chiu n bean khcValue Ch nh value nh l mt StringValue-ref Ch nh value nh l mt tham chiu n cc bean khc

    Properties :Cng ging nh , phn t cng bao gm cc cp key-value, nhng c key v

    value u l String.

    public classOneManBandimplementsPerformer{public OneManBand() {}public void perform() throws PerformanceException {

    for (Iterator iter = instruments.keySet().iterator();iter.hasNext();) {

    String key = (String) iter.next();System.out.println(key + " : " +

    instruments.getProperty(key));}

    }private Properties instruments;

    public void setInstruments(Properties instruments) {this.instruments = instruments;

    }

  • 7/22/2019 Maven - Hibernate - Spring

    37/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    37

    }

    STRUM STRUM STRUMCRASH CRASH CRASH

    HUM HUM HUM

    3.6.AutowiringT ng mc ni :

    nhng phn trn, chng ta tm hiu lm th no to ra mi lin h gia cc beanthng qua cc thao tc DI. Spring cn cung cp kthut cho php t ng lin kt mc nicc bean li. chnh l Autowiring.

    Spring cung cp 4 loi Autowiring nh sau :byName : Tm bean c id ging vi tn thuc tnh thc hin DIbyType : Tm nhng bean c kiu ging vi tn thuc tnh thc hin DIconstructor : Tm nhng bean c kiu ging vi tn thuc tnh thc hin DIautodetect : Autowire bi constructor trc, sau l byName.Autowiring byName :Trong Spring mi th u c a ra mt ci tn. Cc thuc tnhca bean cng c xc

    nh bi tn v nhng bean c ni n cc thuc tnh cng c mt ci tn. Nu tn cathuc tnh khp vi tn ca bean c ni n n, iu gi cho Spring rng bean st ng ni n thuc tnh .

    Thuc tnh song ca kenny c gi tr l Jingle Bells. Ngoi thuc tnh ny, kenny cnc thuc tnh c tn l instrument cha c ch nh mt cch tng minh. Nhng dochng ta khai bo autowire l byName nn Spring container s tm ra bean c id linstrument ni vo thuc tnh instrument.Nhc im ca phng php ny l nuchng ta khai bo nhiu bean kiu Instrumentalist v s dngautowire byName th tt c sc thuc tnh instrument tham chiu n cng mt bean c id l instrument.

    Hnh 3.4 - Autowiring byNameAutowiring byType :Phng php ny lm vic ging nh phng php trn, ngoi tr thay v xem xt tn ca

    thuc tnh th kiu ca thuc tnh s c xem xt. Spring s tm kim nhng bean c kiuging vi kiu ca thuc tnh thc hin mc ni. iu g s xy ra nu Spring tm cnhiu hn mt bean c kiu khp vi kiu ca thuc tnh. Khi Spring s khng th quytnh c s nn chn bean no v thay vo l mt ngoi l s c nm ra. Bi vy,

    phng php ny t ra khng hu hiu trong ng dng thc t.

  • 7/22/2019 Maven - Hibernate - Spring

    38/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    38

    Hnh 3.5 - Autowiring byTypeAutowiring constructor :

    Da vo khai bo trn, Spring s tm bean c kiu khp vi mt trong nhng tham s xut

    hin trong constructor ca lp PoeticJuggler.

    Hnh 3.6 - Autowiring constructorPhng php ny cng c nhc im nh autowiring byType. Hn th na, nu c nhiu

    constructor c tham s khp vi cc bean th cng tr nn rc ri hn.Autowiring autodetect :Khai chng ta mun thc hin mc ni gia cc bean nhng khng quyt nh c nn s

    dng phng php no th bng vic khi bo thuc tnh autowire l autodetect Springcontainer quyt nh thay cho ta.

    3.7.S k tha gia cc bean :

    Cng nh cc lp Java, gia cc bean trong Spring cng c s k tha. Trong mt beanng vai tr l bean cha, bean cn li ng vai tr l bean con.

    Hnh 3.7 - S k tha gia cc Spring beanBean cha c thuc tnh abstract l true v bean con s dng thuc tnh parent k tha t

    bean cha.

  • 7/22/2019 Maven - Hibernate - Spring

    39/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    39

    IV.Spring MVC :

    4.1.Spring Workflow :

    Hnh 3.8Spring workflowMi khi user click vo link hoc submit mt form trn trnh duyt web. Yu cu (request)

    ca user s c gi i . Khi request ny ri khi trnh duyt, mang theo cc thng tin muser yu cu. Trm dng u tin ca request l Dispatcher Servlet. Nhim v ca DispatcherServlet l gi request n cc Controller x l. Nhng thng thng trong mt ng dngc th c nhiu Controller .Dispatcher Servlet cn phi c s tr gip quyt nh la chngi n Controller no. Handler Mapping s gip Dispatcher Servlet a ra chng dng tiptheo ca request. Khi tm ra Controller thch hp vi request. Dispatcher Servlet tin hnhgi request n Controller c la chn. Ti Controller, request i Controller x l thngtin yu cu ca user. Thng thng, Controller khng trc tip lm cng vic ny m y thc

    cho mt i tng chuyn dng khc, ta gi cc i tng ny l cc i tng dch v(service object). D liu thu c sau khi x l request c mang li cho user v hin th lntrnh duyt, d liu ny c qui vo Model. hin th n c user, Controller ng gid liu v tn ca mt View vo trong i tng ModelAndView. Sau gi li choDispatcher Servlet. Nh vy, trong i tng ModelAndView ny bao gm d liu v mtView nhng View ny ch l gi . i tng ModelAndView khng h mang tn ca Viewtht s m n ch mang mt ci tn logic, da vo ci tn ny s tm ra c View thc s.Mt ln na, Dispatcher Servlet phi hi ViewResolver gip tm ra View thc s ang cntm. n y, Dispatcher Servlet bit chnh xc View no s c chn, vic lm cuicng khng c g phc tp, l hin th kt qu cho user. Nh vy, chng dng cui cngca request l ni m View cthc hin , thng thng l trang JSP.

    4.2.Cu hnh DispatcherServlet :Tri tim ca Spring MVC chnh l DispatcherServlet. V vy, trc khi c th s dng

    Spring MVC, chng ta phi cu hnh cho DispatcherServlet. Ging nh mi Servlet khc,DispatcherServlet cng c cu hnh trong web.xml.

    dispatcherorg.springframework.web.servlet.DispatcherServlet1

    Trong l tn ca servlet. Mc nh, khi DispatcherServlet c load th

    n cng s load Spring application context t mt file XML c tn da trn tn ca n. Trong

    trng hp ny, do servlet c tn l dispatcher nn DispatcherServlet s load filedispatcher-servlet.xml. Chng ta s tm hiu file XML ny trong phn sau.Cng vic tiptheo, chng ta phi ch ra a ch URL no s c iu khin bi DispatcherServlet.

  • 7/22/2019 Maven - Hibernate - Spring

    40/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    40

    dispatcher*.htm

    Chng ta chn *.htm v y l pattern chun cho hu ht cc ng dng Spring MVC.n y, DispatcherServlet c cu hnh xong v a ra nh x URL. Chng ta c

    th bt u vit cc chc nng cho ng dng. Nhng vn cn mt vic di y c khuynkhch nn thm vo web.xml, l cu hnh cho Application context loader.4.3. Cu hnh Application Context :

    Nh cp phn trn, DispatcherServlet s load Spring applicationContext t mt file XML da vo servlet-name. Chng ta c th tt c cc bean ca ngdng trong file XML ny. Tuy nhim iu c khng c ngha l chng ta khng th phn chiaSpring application Context thnh nhiu file XML khc nhau. M thng thng, mt ng dngSpring thng c nhiu file XML cu hnh cho ng dng. Nhng tt c cc file ny ch nnc t tp trung mt layer duy nht ca ng dng m thi. Bi v n s lm cho ng dngd dng qun l v c bit l d bo tr. Ngoi ra khi hon i cu hnh ti mt layer th cclayer khc s khng b nh hng (gi s ta thay i cu hnh ca mt lp bng Hibernate

    sang s dng iBATIScng l mt ORM framework chng hn ). chc chn rng tt c cc file cu hnh cho ng dng c load, chng ta cn cu hnh

    context loader trong file web.xml. Mt context loader s m nhn trch nhim load nhngfile cu hnh vi iu kin khi DispatcherServlet c load. Thng s dng nht l servletlistener c tn ContextLoaderListener c cu hnh trong web.xml nh di y :

    org.springframework.web.context.ContextLoaderListener

    Khi cu hnh ContextLoaderListener ,chng ta cn ch ra v tr cc file cu hnh s cload cng DispatcherServlet .Nu vic ny khng c ch nh, Spring context loader s tmkim cc file cu hnh Spring ti /WEB-INF/applicationContext.xml.

    contextConfigLocation/WEB-INF/applicationContext.xml

    Tuy nhin ta hon ton c th ch nh mt danh sch cc ng dn n cc file cu hnh

    Spring .

    contextConfigLocation

    /WEB-INF/dispatcher-service.xml,

    /WEB-INF/dispatcher-data.xml,/WEB-INF/dispatcher-security.xml

    n y DispatcherServlet c cu hnh xong v sn sng c th gi cc yu cu

    n web layer ca ng dng.Nhng web layer hin ti cha c c xy dng.Vic tiptheo m chng ta phi thc hin l xy dng n.4.4. Xy dng web layer :

    d dng hnh dung, chng ta i vo v d thc t sau y.Mi ng dng web u c mt hay nhiu form. Sau y l 4 bc c bn ngn nht to

    ra mt formtrong Spring MVC.

    1.Vit 1 lp controller m nhim cc chc nng logic ca form .2.Cu hnh controller ny trong cu hnh context ca DispatcherServlet, chnh l filedispatcher-servlet.xml.

  • 7/22/2019 Maven - Hibernate - Spring

    41/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    41

    3.Cu hnh View Resolver lin kt controller n trang JSP.4.Vit trang JSP hin th formcho user.Thit k Controller :Controller l mt class bo m s giao tip ca ngi s dng vicc chc nng ca ng

    dng. Hay ni cch khc l ni tip nhn v x l request t ngi s dng.

    Hnh 3.9 - M hnh x l ca mt controllerController thng khng trc tip x l yu cu ca ngi s dngm n y thc cho mt

    i tng khc thc hin , ta gi nhngi tng l cc service object. V cui cng,Controller ly kt qu nhn c gi v cho trnhduyt web hin th ln cho ngi s dng.

    V d sau y l mt Controller cho trang tm kim thng tin v cc d n trong chngtrnh qun l cc d nca mt cng ty phn mm.

    public class SearchProjectsControllerextends SimpleFormController{private ProjectService projectService;public SearchProjectsController() {

    super();setSessionForm(true);setCommandName("query");setCommandClass(ProjectQuery.class);setFormView(UrlConstants.SEARCH_PROJECTS_URL);setSuccessView(UrlConstants.SEARCH_PROJECTS_URL);

    }@Override

    protected ModelAndView onSubmit(HttpServletRequest request,HttpServletResponse response, Object command, BindException errors)

    throws Exception {ProjectQuery query = (ProjectQuery) command;List projects = getProjectService().findByQuery(query);if (projects.isEmpty()) {

    errors.reject("search.project.empty");} else {

    request.setAttribute("projects", projects);}

    return showForm(request, response, errors);}}Controller trn c k tha t lp SimpleFormController, l mt trong nhng controller

    ph bin trong Spring MVC. i tng projectService l i tng c controller y thcthc thi nhim v ca mnh.

    Chng ta s tm hiumt s phng thc c bit trong controller ny .setSessionForm() : Ch ra rng form c c lu vo trong session khi user yu cu mtform mi hay khng.setCommandName () : Thng thng, trong mt Spring form lun c mti tng c bit

    gi l command object , i tng ny l duy nht v s dng tipnhn cc yu cu tpha user.setCommandClass() : Ch nh kiuca i tng command.

    DispatcherServlet Controller Service

    Web

    Re uestRe uest

    ResponseResponse

    doSomething()

  • 7/22/2019 Maven - Hibernate - Spring

    42/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    42

    setFormView() : a ramt ci tn logic ca mt viewmc nh ca controller. Da votn ny, View Resolver s xc nh c chnh xc view c chn hin th kt qu. setSuccessView () : Ch ra view no s c chnsau khi qu trnh user submit thnh cng.onSubmit () : Phng thc x l s kinsubmit m user to ra trn form.showForm() : Sau khi cc chc nng logic c hon thnh bi cc service object, l thigian controller gi kt qu tr li cho trnh duyt thng qua phng thc showForm().

    Phng thc ny s tr v mt i tng ModelAndView. i tng ny l mt khi nimquan trng trong Spring. N s ng gi view v ton b dliu ca view .Sau y l s hot ng ca SimpleFormController.

    Hnh 3.10 - S hot ng ca SimpleFormControllerNgoi cc phng thc trn, SimpleFormController cn cung cp cho ta mt s phng

    thc quantrng khc na.formBackingObject() : Khi to gi tr ban u cho command object.

    Resource requested

    Create form object

    Create and init binder

    Bind to form object

    Retrieve form from session

    Remove from sessionCreate NewForm object

    Create and init binder

    Everything from AbstractController

    Is a form submission?

    Yes

    No

    Yes Yes Yes

    No No

    Is a session form? Is form bean in session?

    Bind request parameters to form object

    Collect reference data

    Display form view

    Stored in session

    No

    Yes

    No

    Should bind on NewForm?

    Is a session form?

    Validate form object

    onBindAndValidate

    Handle form submit

    Yes No

    YesNo

    NoYes

    Done

    Validate on bind?

    Errors from binding or validation?

    Suppress validation?

  • 7/22/2019 Maven - Hibernate - Spring

    43/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    43

    initBinder() : Phng thc ny s c gi ngay sau khi thc th form c to ra vcontroller s dng to ra s gn kt d liu cho i tng trong form. Thng thng cclp trnh vin s s dng phng thc ny ng k ci c gi chung l PropertyEditorsca mt form. V d nh ng k nh dng cho cc i tng kiu ngy, thi gian, cc itng Java Collection hay cc i tng lm nhim v upload filereferenceData() : Phng thc ny c nhim v cung cp d liu cho cc thuc tnh ca i

    tng command.Cu hnh bean controller :

    Nh vy ta thit k controller xong. K tip l vic cu hnh bean controller trong filecu hnh ca DispatcherServlet (dispatcher-servlet.xml ).

    Ch rng, khng ch ring bean projectService m tt c cc bean ca cc service object

    khc u phi nm trong Application Context. Hay ni cch khc, cc bean ny s c khaibo trong applicationContext.xml.

    Thc ra, cng nh controller, cc service object cng y thc nhim v c giao cho mti tng khc thc hin l cc DAO hay Data Access Object. Cc i tng ny c khnng lm vic trc tip vi c s d liu ca ng dng. V chng cng c khai bo trongapplicationContext.xml.

    c th lm vic trc tip vi c s d liu, cc DAO c cung cp mt thuc t nh

    chuyn m nhn vic kt ni, thc hin truy vn n c s d liu. chnh l thuc tnh ctn sessionFactory m chng ta tm hiu qua trong Hibernate framework.

    Spring MVC c thit k lm vic tt vi cc framework khc, c bit l h try cho Hibernate. Spring MVC s s dng Hibernate nh l mt cu ni n c s d liu. Tuynhin, cng xin ni thm,trong Spring MVC cng h tr sn kh nng lm vic trc tip vic s d liu nhng chc chn khng th mnh bng khi kt hp vi cc ORM framworkkhc.

    Sau y l khai bo bean sessionFactory trong Spring Application Context c kt hp viHibernate.

    /WEB-INF/hibernate.cfg.xml

    org.hibernate.cfg.Configuration

    Bean abstractSessionFactory l mt i tng ca lp LocalSessionFactoryBean. y l

    mt lp c Spring thit k c th lin kt vi Hibernate. Lp ny ng vai tr tng tnh SessionFactory trong Hibernate. Thuc tnh abstract l true ch nh y l bean trutng v cc bean khc c th extends t n. Cch lm ny s gip ta c th to ra nhiu hn

  • 7/22/2019 Maven - Hibernate - Spring

    44/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    44

    mt SessionFactory trong cng mt ng dng.Thuc tnh configLocationch nh ng dnn file hibernate.cfg.xml . Mi kt ni s c thit lp thng qua n. Trong trng hp tas phng php nh x XML th thuc tnh configurationClass c gi tr lorg.hibernate.cfg.Configuration v org.hibernate.cfg.AnnotationConfiguration khi s dngAnnotations Mapping.

    Trong khai bo bean sessionFactory , thuc tnh parent c gi tr l abstractSessionFactory

    ch ra rng n c k tha t abstractSessionFactory.Bn cnh SimpleFormController, Spring MVC cn cung cp rt nhiu controller khc na.Mi controller c thit k cho nhng nhim v c bit. Sau y l danh sch phn cp catt c cc controller trong Spring MVC.

    Hnh 3.11 - Cc controller trong Spring MVCCu hnhView Resolver :

    Khi kt qu c gi n trnh duyt, ch nh chnh xc trang JSP no s hin th chng,ta phi khai bo bean viewResolver trong dispatcher-servlet.xml.Nhim v ca bean ny rtn gin l ly tn logic ca view trong i tng ModelAndViewv nh x n n mt viewthc s.

    /WEB-INF/jsp/

    .jsp

    Spring MVC cung cp nhiu i tng lm nhim v View Resolver nhng ta s s dnglp InternalResourceViewResolver , l View Resolver n gin nht. Bean viewResolver s

  • 7/22/2019 Maven - Hibernate - Spring

    45/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    45

    cho bit ni lu tr cc view v nh dng ca cc view .Thng thng,cc view c lutr ti th mc /WEB-INF/jsp v nh dng ca chngl .jsp, mt trong nhng loi view ph

    bin trong SpringMVC.Tip theo chng takhai bo nh x URL, vic lm ny cho Spring bit c tng ng vi

    mi controller th c nhng view thch hp nodnh cho chng.

    searchProjectsController

    Bean urlMapping ny c nhim v nh x t url n controller. trn, tt c cc thao tc

    ca user trn url searchProjects.htm s c controller searchProjectsController x l.Thuc tnh interceptors l mt tnh nng c Spring MVC cung cp nhm gii quyt vn a ngn ng trong ng dng. Hay ni mt cch d hiu, thuc tnh ny s gip cho ng dngc th chuyn i qua li gia nhiu ngn ng khc nhau k c trn giao din v d liuchng trnh.

    n y, chng ta cu hnh ton b cho Spring MVC xong. Vic lm tip theo rt ngin l thit k cc trang JSP hin th kt qu.Thit k View :

    Vic thit k trang JSP trong Spring cng khc so vi vic thit k cc trang JSP bnhthng. JSP trong Spring c h tr thm cc th vin th gi l cc taglib. Sau y l ccth vin th thng gp.Th vin : Th < spring:message> : Xut ra mt thng ip nm trong file *.properties.

    Th vin : Th : Khai bo 1 Spring formTh : Khai bo 1 Spring inputTh : Khai bo 1 Spring select list

    Th : Khai bo 1 Spring checkboxTh vin : Th : Biu thc switchTh : Biu thc caseTh : Biu thc default trong mnh switch caseTh : Biu thc iu kinifTh : Xut ra gi tr 1 bin l mt atrribute trong requestTh : Thc hin 1 vng lp

    Th vin : Th : Xut ra mt thng ip nm trong file *.properties.

    Th : nh dng cch hin th d liu ngy, thi gian.Th : nh dng cch hin th d liu s.

  • 7/22/2019 Maven - Hibernate - Spring

    46/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    46

    Chng ta tip tc vi chng ng thit k mt Spring form .Trang searchProjects.jsp :

  • 7/22/2019 Maven - Hibernate - Spring

    47/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    47

    Trong th , thuc tnh commandName chnh l tn command object cacontroller. i tng ny l mt thc th ca lp ProjectQuery do ta nh ngha nhsau.

    public class ProjectQuery {private String searchKey;private List projectIds;

    }

    Lp ny c hai thuc tnh, searchKey l t kha tm kim, t kha ny c gn vo th thng quapath=searchKey. Thuc tnh projectIds l danh sch lu tr cc gitr id ca cc project trong kt qu ca vic tm kim v danh sch ny c gn vo th thng qua vic khai bo path=projectIds. Khi user nhp t kha votextbox hoc click chn vo cc checkbox th cc gi tr ny s t ng gn cho cc thuc tnhca command object. K thut ny gip chng ta tit kim c vic phi vit m lnh rtnhiu.

    s dng th , ta phi to ra file properties cha gi tr ca cc thuctnh code cho th ny.Mc nh th Spring s tm cc code ny trong file c tnmessages.properties. V sau y l ni dung ca n.

    search=Tmkim

    search.empty=Khngtmthyktqunoproject.number=MSproject.customer=KhchHngproject.group=Nhmproject.status=TrngThiproject.startdate=NgyBtuproject.endDate=NgyKtThc

    V sau y l kt qu thu c :

    Hnh 3.12 - Form tm kim d n

  • 7/22/2019 Maven - Hibernate - Spring

    48/75

    BO CO THC TP TT NGHIP I HC CHNG III SPRING MVC FRAMEWORK

    48

    Nhvy, chng ta tm hiu v nhng iu c bn nht v c hai framework Hibernate vSpring MVC. Tuy nhin cn rt nhiu iu khc na ni v chng. Nhng gii hn khngcho php nn chng ta s nghin cu vo nhng bi bo co sau. Trong phn tip theo s lmt hnh c s d liu ca chng trnh demo Chng trnh qun l thng tin cc d n

    phn mm.

  • 7/22/2019 Maven - Hibernate - Spring

    49/75

    BO CO THC TP TT NGHIP I HC CHNG IV M HNH C S D LIU

    49

    CHNG IV M HNH C S D LIU

    I.Cng c thit k :- H qun tr c s d liu MySQL server 5.1- MySQL workbench 5.2

    - Power Designer 12.5

    II.Danh sch cc bng :Qui c :PK : Kha chnhFK : Kha ngoiM : Thnh phn bt buc phi cO : Ty chn(*) : Thng tin thm

    1.Bng company : Chacc thng tin chung v cng ty

    STT Tn Kiu ngha Ghi ch1 companyid Bigint(20) PK M2 shortname Varchar(10) K hiu M3 name Varchar(100) Tn y M4 establisheddate Date Ngy thnh lp O5 logourl Varchar(200) Logo O6 slogan Varchar(200) Slogan O7 videourl Varchar(200) Video gii thiu O8 address Varchar(100) a ch O9 email Varchar(50) Email M

    10 phone Varchar(20) S in thoi O11 fax Varchar(20) S fax O12 achievement Text Thnh tu O13 overview Text Tng quan O14 career Text Ngh nghip O15 technology Text Cng ngh O(*)Chng trnhs c 1 trang ch, trn trang ny ngoi vic hin th cc thng tin v cng tycn c 1 form ng nhp. Khi nhn vin ng nhp thnh cng s dn vo trang menu ccng dng. Cc ng dng s c lu tr trong bng application bn di y.

    2.Bng application : Cha thng tin v cc ng dng

    STT Tn Kiu ngha Ghi ch1 applicationid Bigint(20) PK M2 title Varchar(50) Tiu M3 imageurl Varchar(200) nh nn M4 iconurl Varchar(200) Icon O5 friendlyurl Varchar(100) URL M(*)ng dng chnh ca chng trnh l qun l thng tin cc d n, bn cnh cn c qunl thng tin nhn vin, thng tin khch hng/i tc.

    3.Bng employee : Cha thng tin v cc nhn vin

    STT Tn Kiu ngha Ghi ch1 employeeid Bigint(20) PK M2 departmentid Bigint(20) FKPhng ban M

  • 7/22/2019 Maven - Hibernate - Spring

    50/75

    BO CO THC TP TT NGHIP I HC CHNG IV M HNH C S D LIU

    50

    3 rankid Bigint(20) FKTh hng M4 universityid Bigint(20) FKTrng M5 marriedstatus Varchar(20) Tnh trng hn nhn O6 diplomaid Bigint(20) FKBng cp M8 visa Varchar(10) Tn vit tt M9 firstname Varchar(10) Tn nhn vin M

    10 lastname Varchar(50) H nhn vin M11 dateofbirth Date Ngy sinh M12 placeofbirth Varchar(100) Ni sinh O13 hiredDate Date Ngy vo lm O14 phone Varchar(20) S in thoi O15 email Varchar(50) Email M16 yahoo Varchar(50) Yahoo nickname O17 bankaccountno Varchar(20) S TKngn hng O18 gender Boolean Gii tnh O19 salary Float Lng O

    20 imageurl Varchar(200) nh nhn vin O21 available Boolean F : ngh vic M

    4.Bng rank : Th hng ca nhn vinVD: Engineer, Manager, Senior ManagerSTT Tn Kiu ngha Ghi ch

    1 rankid Bigint(20) PK M2 name Varchar(30) Tn M

    5.Bng university : Tn cc trng i hcm nhn vin tt nghip

    STT Tn Kiu ngha Ghi ch1 universityid Bigint(20) PK M2 name Varchar(100) Tn M

    6.Bng diploma : Tncc loi vn bng ca nhn vinVD : C nhn , K s, Thc s...STT Tn Kiu ngha Ghi ch

    1 Diplomaid Bigint(20) PK M2 Name Varchar(30) Tn M

    7.Bng department : Danh sch cc phng bantrong cng tySTT Tn Kiu ngha Ghi ch

    1 department id Bigint(20) PK M2 name Varchar(30) Tn M3 email Varchar(50) Email M4 phone Varchar(20) S in thoi O

    8.Bng role : Danh sch cc quyn ca ngi dngVD : Admin, Manager, HR, DeveloperSTT Tn Kiu ngha Ghi ch

    1 roleid Bigint(20) PK M2 name Varchar(30) Tn M

  • 7/22/2019 Maven - Hibernate - Spring

    51/75

    BO CO THC TP TT NGHIP I HC CHNG IV M HNH C S D LIU

    51

    9.Bng user : Thng tin ngi dngSTT Tn Kiu ngha Ghi ch

    1 userid Bigint(20) PK M2 roleid Bigint(20) PKVai tr M3 employeeid Bigint(20) PKNhn vin M4 loginname Varchar(30) Tn ng nhp M5 password Varchar(50) Mt khu M6 email Varchar(50) Email M7 enable Boolean Enable/Disable M8 imageurl Varchar(200) nh i din O

    10.Bng customer : Cha cc thng tin v khch hngSTT Tn Kiu ngha Ghi ch

    1 customerid Bigint(20) PK M2 fieldid Bigint(20) FKLnh vc hot ng M3 typeid Bigint(20) FKLoi hnh t chc M4 cityid Bigint(20) FKThnh ph M5 name Varchar(30) Tn khch hng M6 representator Varchar(50) Ngi i din M7 yahoo Varchar(50) Yahoo nickname M8 address Varchar(100) a ch O9 email Varchar(50) Email M10 phone Varchar(20) S in thoi O11 website Varchar(50) Website O

    12 logourl Varchar(200) Logo O13 slogan Varchar(100) Slogan O14 description Text Thng tin m tv khchhng O15 isfriendly Boolean nh du l khch hng thn thit O

    11.Bng customertype: Loi hnh t chc ca khch hngVD : Cng ty TNHH, cng ty vn u t nc ngoi, t chc chnh ph...

    STT Tn Kiu ngha Ghi ch

    1 typeid Bigint(20) PK M2 name Varchar(100) Tn M

    12.Bng customerfield : Lnh vc hot ng ca khch hngVD : Ngn hng, bo him, giao thng vn ti, kinh doanh...

    STT Tn Kiu ngha Ghi ch

    1 fieldid Bigint(20) PK M2 name Varchar(100) Tn M

    13.Bng city : Cha danh sch cc thnh phSTT Tn Kiu ngha Ghi ch

    1 cityid Bigint(20) PK M

    2 name Varchar(30) Tn M3 countryid Bigint(20) PK M

  • 7/22/2019 Maven - Hibernate - Spring

    52/75

    BO CO THC TP TT NGHIP I HC CHNG IV M HNH C S D LIU

    52

    14.Bng country : Cha danh sch cc quc giaSTT Tn Kiu ngha Ghi ch

    1 countryid Bigint(20) PK M2 name Varchar(30) Tn M3 sign Varchar(10) K hiu M4 code Varchar(10) M nc M

    15.Bng project : Lu tr cc d nSTT Tn Kiu ngha Ghi ch

    1 projectid Bigint(20) PK M2 customerid Bigint(20) FKKhch hng M3 statusid Bigint(20) FKTrng thi M4 groupid Bigint(20) FK - Nhm M5 number Int(11) S d n M6 name Varchar(100) Tn d n M7 startdate Date Ngy bt u M8 enddate Datet Ngy kt thc O9 logourl Varchar(200) Logo O

    16.Bng projectstatus : Cha cc trng thi ca d nVD : Invalidate , To Validate, Validated, Finished

    STT Tn Kiu ngha Ghi ch

    1 statusid Bigint(20) PK M2 name Varchar(100) Tn M

    17.Bng task : Cha cc cng vic ca cc d nSTT Tn Kiu ngha Ghi

    ch1 taskid Bigint(20) PK M2 categoryid Bigint(20) FKLoi M3 projectid Bigint(20) FKD n M4 statusid Bigint(20) FKTrng thi M5 priorityid Bigint(20) FK u tin M6 severityid Bigint(20) FK phc tp M7 reporter Varchar(10) Ngi to M

    8 assignedto Varchar(10) Ngi nhn O9 code Varchar(20) M cng vic M10 summary Varchar(10) Tm tt M11 description Text M t c th M12 additionalinformation Text Thng tin thm O13 percentcomplete Int(11) % hon thnh O14 createdtime Datetime Thi gian to O15 starttime Datetime Thi gian bt u O16 endtime Datetime Thi gian kt thc O17 estimatetime Float Thi gian c lng O18 actualtime Float Thi gian thc t O19 phase Varchar(30) Pha O20 attachedfiles Text Files nh km O

  • 7/22/2019 Maven - Hibernate - Spring

    53/75

    BO CO THC TP TT NGHIP I HC CHNG IV M HNH C S D LIU

    53

    21 lastchanged Datetime Cp nht cui O22 note Text Ghi ch O

    18.Bng taskcategory : Loi cng vicVD : Bug, ChangeRequest, New-Feature, Customer Reported Bug, Deployment...

    STT Tn Kiu ngha Ghi ch

    1 categoryid Bigint(20) PK M2 name Varchar(30) Tn M

    19.Bng taskstatus: Trng thi ca cng vicVD : Pending, Assigned, Confirmed , Feedback ,To be reviewed, Resolved ,Closed

    STT Tn Kiu ngha Ghi ch

    1 statusid Bigint(20) PK M2 name Varchar(30) Tn M3 color Varchar(30) Mu sc M

    20.Bng taskpriority: u tin ca cng vicVD : immediately, urgent, high , normal , low

    STT Tn Kiu ngha Ghi ch

    1 priorityid Bigint(20) PK M2 name Varchar(30) Tn M

    21.Bng taskseverity : phc tp ca cng vicVD : critical, major, normal, minor, trivial, enhancement

    STT Tn Kiu ngha Ghi ch

    1 severityid Bigint(20) PK M2 name Varchar(30) Tn M

    22.Bng group : Nhm qun ld nSTT Tn Kiu ngha Ghi ch

    1 groupid Bigint(20) PK M2 leader Bigint(20) FK M(*) Mi d n s thuc v mt nhm, nhm ny c xc nh bi mt nhn vin duy nht vnhn vin ny c vai tr Group Leader trong d n.

    23.Bng roleapplicationpermission : S cho php ca cc role i vi cc ng dngSTT Tn Kiu ngha Ghi ch

    1 roleid Bigint(20) PK M2 applicationid Bigint(20) PK M3 permission Int(11) M(*)permission : 0read , 1 : read/write

    24.Bng function : Chc nng ca cc nhn vin trong d nVD : GL, PM, Project Leader, Quality Agent, Developer,Tester

    STT Tn Kiu ngha Ghi ch

    1 functionid Bigint(20) PK M2 name Varchar(30) Tn M

  • 7/22/2019 Maven - Hibernate - Spring

    54/75

    BO CO THC TP TT NGHIP I HC CHNG IV M HNH C S D LIU

    54

    25.Bng employeefunctioninproject : Nhn vin & chc nng ca htrong d nSTT Tn Kiu ngha Ghi ch

    1 employeeid Bigint(20) PK M2 functionid Bigint(20) PK M3 projectid Bigint(20) PK M

    26.Bng log : Ghi li ton b qu trnh thay i trn cc cng vic ca nhn vin STT Tn Kiu ngha Ghi ch

    1 taskid Bigint(20) PKCng vic M2 time Datetime PKThi im M3 employeeid Bigint(20) FKNhn vin M4 reason Text L do O5 field Varchar(100) Trngb thay i M6 change Varchar(100) Ni dung thay i M

    27.Bng taskchild : S ph thuc gia cc cng vicSTT Tn Kiu ngha Ghi ch

    1 taskid Bigint(20) PKCng vic cha M2 taskchildid Bigint(20) PKCng vic con M

    III.M hnh c s d liu:

  • 7/22/2019 Maven - Hibernate - Spring

    55/75

    BO CO THC TP TT NGHIP I HC CHNG V MODULE PHN CHIA & PHN CNG

    55

    CHNG V MODULE PHN CHIA & PHN CNG CNG VIC

    I.Gii thiu chng trnh :STT Ni dung

    ng dng Web Application

    Ngn nglp trnh JavaServer Apache Tomcat 6IDE Eclipse HeliosC sdliu MySQL Server 5.1, MySQL Workbench 5.2 CECng c Maven 2, Power Designer 12.5Th vin Hibernate, Spring MVC , jQuery 1.6, jQuery UI 1.8Chc nng +Thm/Xa/Sa dn, tm kim dn theo tn, m s,

    khch hng, trng thi, nhm+Phn bnhn vin vo dn, xa nhn vin ra khi dn, tm kim thng tin nhn vin trong dn theo tn, vaitr, bng cp+To cng vic, phn cng cng vic, cp nht thng tincng vic, tm kim cng vic theo nhiu tiu chun nhngi to, ngi nhn, trng thi, u tin...+ng nhp, phn quyn ngi dng+Giao din c htrting Vit v ting Anh

    Chng trnh c chia lm 2 layer :Core layer: Bao gm cc lp Java persistence, Data Access Object DAO, Data TransferObjectDTO v lpService.Ngoi ra cn c mt s lp utility khc. Layer ny c nhim vlm vic vi c s d liu ng dng.

    Web layer : Layer ny c chia lm 2 phn-Jar : Cha ng cc Controller , Validator ca Spring MVC, cc lp Java bean lm nhimv phn trang, upload file hay nh dng m ha k t (UTF-8,ISO...).

    -War : Bao gm ton b cc file XML cu hnh ca Hibernate vSpring MVC, cc trangJSP, JavaScript, mt s th vin nh JQuery, JQuery UI, CSS, hnh nhv cc th vinth.

    V giao din, chng trnh c h tr 2 ngn ng : ting Vit v ting Anh. Chng trnh thc hin c vic a ngn ng trn giao din. Vic a ngn ng trong d liu s c thc hin trong thi gian sp ti.Ngoi vic qun l thng tin cc d n, chng trnh s cung cp thm mt s chc nngkhc nh qun l thng tin c nhn, thng tin ngi dng, khch hng, nhn vinca cng ty.Ty theo vai tr ca ngi dng m chng trnh s cung cp cc danh mc ng dng khc

    nhau. Hin ti, chng trnh thc thc hin c chc nng qun l thng tin d n, ccchc nng khc cng s ln lt c hin thc trong thi gian sp ti.Trong danh sch ngi dng, s c mt user ng vai tr l admin, user ny c php qun

    l nhng cng vic chung ca ng dng nh Thm/Xa/Sa d n, nhn vin, khch hng,ngi dngkhc.

    Trong ng dng qun l thng tin d n. Mi d n s c mt Group Leader - GL, nginy c th lm leader nhiu d n khc, GL s lm vic trc tip vi Project Manager - PM.Bn di PM l Project LeaderPL. PL l ngi qun l mi cng vic trong d n nh tocng vic, giao vic cho nhng thnh vin khc, thng k cng vic.

    V vic cp nht thng tin cng vic, ch c PL v thnh vin c giao cng vic(hay chnhn ca cng vic) mi c th cpnht thng tin cho cc cng vic.iu cng c

    ngha rng, cc thnh vin cng c th giao nhim v ca mnh cho ngi khc. Nhng mihnh ng din ra trn mi cng vic u c lu li mt cch chi tit. Sau y l mt shnh nh v chng trnh.

  • 7/22/2019 Maven - Hibernate - Spring

    56/75

    BO CO THC TP TT NGHIP I HC CHNG V MODULE PHN CHIA & PHN CNG

    56

    II.Hnh nh Demo :1.Trang ch :

    Ti trang ch, user c th ng nhp vo h thng,thay i ngn ng hoc xem cc thngtin chung v cng ty nh lnh vc hot ng chnh, c hi ngh nghip v cc cng ngh mcng ty ang s dng.

    Hnh 5.1Trang ch khi cha ng nhpKhi user click vo Gii Thiu, chng trnh s chuyn n trang cha mt video gii thiu v cng ty.

    y l mi ch l tng, hin ti tnh nng ny cha c thc thi. Hai tnh nng Duy tr trng thing nhp v Qun mt khu cng s c hin thc sau.

  • 7/22/2019 Maven - Hibernate - Spring

    57/75

    BO CO THC TP TT NGHIP I HC CHNG V MODULE PHN CHIA & PHN CNG

    57

    Trang ch sau khi user ng nhp :

    Hnh 5.2Trang ch khi ng nhp

    Mi user s c mt hnh nh i din, khi click vo hnh nh ny s a user n trang thng tin c nhn.

  • 7/22/2019 Maven - Hibernate - Spring

    58/75

    BO CO THC TP TT NGHIP I HC CHNG V MODULE PHN CHIA & PHN CNG

    58

    2.Trang danh sch cc ng dng :Sau khi ng nhp thnh cng, chng trnh s chuyn n trang Trang Ch Ca Ti cha

    danh sch cc ng dng.

    Hnh 5.3Danh sch cc ng dngy l trang ng dng ca user admin, i vi user khc th khng c ng dng Ngi

    Dng.Hin ti ng dng D n c thc hin, cc ng dng khc cn ang trong thigian xy dng.

    Khi user click vo mi tn mu xanh, mt bng menu s hin ra cho php user chn thay imt khu hay thot khi ng dng.Khi user chn thot khi ng dng, chng trnh s chuynn trang ch trng thi khi cha ng nhp.

    Khi user click vo dng ch tn ca user th chng trnh s chuyn n trang thng tin c nhnca user .

    (*): Tnh nng thay i mt khu cha c hin thc

  • 7/22/2019 Maven - Hibernate - Spring

    59/75

    BO CO THC TP TT NGHIP I HC CHNG V MODULE PHN CHIA & PHN CNG

    59

    3.Trang ng dng D n :a) i vi ngi dng l admin:Chng trnh s hin th ton b danh sch cc d n c trng thi cha hon thnh cng vi

    cc nt lnh Thm/Xa/Sa,tm kim d n.

    Hnh 5.4Danh sch d n ca admin

    (*) :Chc nng phn trang ch mi c hin thcmt phn.