1、xsb刊名福述 |数据类晏可杳默认值说朗XH学号Char(6)X无主键2, 设计糸统架构利用分层架构模式,设计糸统架构,糸统可分为表示层、业务逻 辑层和教据持久层。如下图所示:日龙)xscjMaiiag由昌:_ hibernate3白注src国加 org. action it org. dao匡田org4包oimp 审or- niodellieI a-JB org. serviceI I 国加 org. service, imp田曲 org. tool=圍 struts.pfopc:丫ties5X, struts, xml I建立相应 packageo()定义 User Library(2)增
2、加Spring开发能力(添加jar包 使用User Library,新建applicati on Context.xmD注:可以不增加U$er Library,直換把需要的jar包挎貝列classpath 下。4,卖现Hibernate 久层(1)添加Hibernate开发能力添加jar包:如黑第一步中己增加,此步可以省略。注意:需要把Hibernate 由Spring来管理,其中包括亦Spring 中配置 !DOCTYPE hibernate-mapping PUBLIC h-/Hibernate/Hibernate Mapping DTD 3.0/EN”hiber nate. source
3、forge. net/hibern8temdpping30dtdhibernate-mappi ngclas$ n8me=9rgmodelXsb” table=HX$BM schema=,dbon catalog=uXSCJHid name=HxhM type=Mjava.lang.String*column name=hXHw length=H6H/vgen erator clas$=Massigned,/idproperty rwme=xm type=* java. I a ngString”column name=MXMH length=H50M/propertyproperty nam
4、e = ,xb, type=,java.Ian&Bytecolumn n8me=”XB/property name = nc$sjM type= java.util.Date,colu mn name=,tCSSJf1 length=M23M/property name=zxf type=java.langntegerhcolumn n8me=”ZXFproperty name = Hbzn type=java8ngStringcolumn name=HBZM length=500zpMcolumn n8me=”ZP”/many-to-one name-zybH dass-org.model.
5、Zyb fetch-select Iazy-false,tcolumn name-ZYJDh/many-to-one/class/hibernate-mapping 堆点2:成绩表Ccjb丿中需要合主徴,因为成绩表中的主健是由xh和kch组成,黒考代码如下:xml version = ,1.0, encoding=Mutf-8v!-Mapping file autogenerated by MyEclipse Persistence Tools-clas$ name = Morg.model.CjbM table=,CJBM schema = HdboH catalog=,XSCJ, comp
6、osite-id n dass=worg.model.CjbldHkey-property name-wxh type-java.la ng.String*1column name-XH length-w6R/Aey-property key-property name-wkchw type-f,java.lang.$tringKCHw length-4w/Aey-property/composite-id cjM type = Hjava.langntegerMcolumn name=*CJM/property name = xf type = ,javaangntegerMcolumn n
7、8me=”XF/property /clas$对应的POJO类由复合主键的POJO类和成绩表的POJO类组成, 参考代码如下:Cjbld.javapackage org.model;public class Cjbld implements java.io.Serializable private String xh:private String kch:public Cjbld0 public Cjbld(String xh. String kch) this.xh = xh;this, kch = kch:public String getXhQ return this.xh;public
8、 void setXh (String xh) this.xh = xh;public String getKchO return this.kch:public void setKch (String kch) this.kch = kch;Cjb.javapublic class Cjb implemejava.io.Serializable private Cjbld id: private Integer cj;private Integer xf: public CjbO(public Cjb(Cjbld id) thls.id = id;public Cjb(Cjbld id. I
9、nteger cj. Integer xf) this.id = id;this.cj = cj; this.xf = xf:public Cjbld getldO return this.id:public void setld (Cjbld id) this.id = id;public Integer getCjO return this.cj:public void setCj(l nteger cj) this.cj = cj;public Integer getXfO return this.xf:public void $etXf(lnteger xf) this.xf = xf
10、:i A :所有的畝射丈件席要农Spring紀JL丈件中注册,参考applicationContextxml 如下:bean id=datasource class=Mmons.dbcp.BasicDataSourceM-岌义数据库驱动-property n ame=ndriverClassNamen value=,.mysql.jdbc.Driver,岌义致据库URL-property n ame=nurr value=t,jdbc:mysql:/localhost:3306/xscj,-岌义的用户名property name=,usernameM va I ue=nrootM 岌义数摒库密
11、码-property n ame=npasswordn val ue=nroof /bean- 主义 Hibernate 的 Session Factory -v bean id=sessionFactory11class=Horg.springframework.orm.hibernate3 .Local$essionFactoryBeanM-龙义 SessionFactory 必须 注入 DataSource-property name=,fdata Sou rceM ref bea n=datasource”/-龙义 Hibernate 的 SessionFactory 為性proper
12、ty name=nhibernatePropertiesn props prop key=,hibernate.dialectnorg.hibernate.dialect.MySQLDialect/prop/props-岌义POJO的映射丈件一property name=,mappingResources,listvalueorg/model/Dlb.hbm.xmlvaIueorg/model/Xsb.hbm.xmlorg/model/Kcb.hbm.xmlorg/model/Zyb.hbm.xml value org/mode!/Cjb.hbm.xml 5, 卖现DAO所有DAO层的卖现类需
13、要继承HibernateDaoSupport类,参考 代码如下:package org.dao.imp;import java.util.List;import org.dao.DIDao;import org.model.Dlb;import org.springframework.orm.hibernate3.support. HibernateDaoSupport;public class DIDaoImp extends HibernateDaoSupport implements DIDaopublic boolean existXh(String xh) List list=get
14、HibernateTempIateOfindf,from Dlb where xh=?,xh); if(list.sizeO0)return true;elsereturn false:public Dlb find (String xh. String kl) String str=xh,kl);List Iist=getHibernateTempIate0.findf7rom Dlb where xh=? and kl = ?str); if(listsizeOreturn (Dlb) Iist.get(0);return null;public void save(Dlb user) g
15、etHibernateTempIate O.save (u ser):注裔:所有DAO层的卖现类都需要在Spring配置,并且必须获 得一个SessionFactory的引用,然后才能完成持久化访问。换句话说, DAO的实现类都交由Spring彖薜的Bean来管理。参考Spring中的配置DAO的部分代码如下bean id = ,dlDaoM class=Horg.dao.imp.DIDaolmpse$sionFactorynref bean = nse$sionFactoryM/bean id=,xsDao, class=Horg.dao.imp.X$DaolmpM$essionFactor
16、y”ref bean = se$sionFsctory/ kcDao clas$=Horg.dao.imp.KcDaolmpMproperty name=Hse$sionFactoryMref bean = HsessionFactoryVbean id=”zyD8o cla$s = Hor&d8Oimp.ZyDdolmpse$sionFactoryHsessionFactoryVcjDao” cla$=Horg.dao.imp.CjDaolmpMsessionFactoryref bean = n$e$sionFactory*76、 实现业务逻辑层(Service层丿主要卖现对DAO层的调用
17、。堆点依赖注入依赖注入if先要亦需要注入的类中步朗一个变量(对象丿,同时生 成该变量(对象丿的setter方法。其次需要在Spring配置文件中设置 需要注入的对象。例如,需要亦螯录的DIServiceManage类中注入DIDaoImp卖例化后的对象,步骤有二:首先,在DIServiceManage中步明diDao,同肘生成diDao的setter 方法,参考代码如下: package org.service.imp;import org.dao.DIDao:import org.service.DIService;public class DIServiceManage implement
18、s DIService对DIDao进行依赖di入private DIDao diDao;public void setDIDao(DIDao diDao) this.dIDao = diDao;return dlDao.existXh(xh):return dlDao.find(xh. kl);diDao.save(user);其次,A. Spring的紀置文件中进行配置:bean id = diService class = ,org.service.imp.DIServiceManag3property name=HdlDaonref bean=HdlDao77. 对业务逻辑增加事务管理采
19、用 BeanNameAutoProxyCreator,根据 Bean Name 自动生成事务代理的方式。参考代码:bean id = Mtran$actionManagerclas$=Horg.springframework.orm.hiber n8te3Hibern8teTr8 nsactionMa nsger”- HibernateTransactionManager bean 需妥依赖 垃入一个SessionFactory bean的引用“property name=,$essionFactoryHref local = HsessionFactoryM / 犯置.孝务捏就霉“bean
20、id=,transsctionlnterceptor”clas$=Horg.springframework.transaction.interceptor.Transactionlnterceptor 丰务拦禰赛bean需要依籍垃入一个字务管理春-property name=HtransactionManager ref=transactionManager” /transactionAttributes”下面麦义孝务传林禺性-prop$prop key=ndeleteAUPROPAGATION_REQUIRED PROPAGATION REQUI RED -丸义BeanNameAutoPro
21、xyCreator.该besn无需枚引用,因此没有id禺性.迂个bean根据 孝务栏範各为n febeanfj动创雄手务代理一beanclas$=,org.$pri ngframework. aop. framework, butoproxy. Bea nNsmeAutoProxyCrestor指丸对满足哪 些bean name的beanlj动生成业务代理 -property name=HbeanName$Mv ! 下面是所冇需宴勺动创建李务代理的bean-li$txsServicekcServicecjServicezyService- 此处可增加其他需妄自动创建李务代理的bean- 下面丸
22、义BeanNameAutoProxyCreator所需的李务捏就孚property name=uinterceptorNamesM va I ue tran sactio nlnterceptorv/value- 此处可埴加其他折的Interceptor-8. 卖现表示层CAction类和JSP丈件丿(1J配置 web.xmL增加Struts2的过德赛和Spring的监听器,参考代码如下:filterfilter-namestrut$2fi Iter-class org.apache.struts2.dispatcher.FilterDi$patcher/filter-cla$s/filterf
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2