项目小结 spring mvc 和jdo

前言

  经过大家一个多月的加班加点,终于给一个绿线挂号网站雏形1.0版搞出来了,作为项目组成员之一,编写了部分模块,看到自己的工作有的效果,还是很欣慰,虽然这次上线的不是我们,不过感觉还有一定的成就感。

业务篇:

  个人初次涉及医疗行业项目,团队和公司也是第一次涉足于该行业的项目,不懂需求,也不懂业务,大家的思路刚开始就像一个顽皮的孩子,在这个未知的道路摸索,不过幸运的是这个旅途中还是有指路人帮助我们一起搞需求,到四月十号左右,终于给初步需求搞清楚了,大致思路领导把握的当时我还没有参与,参与进来的时候初步需求都已经搞好了。然后我们根据这个项目的基本需求来熟悉业务。大致分为医院,科室,专家(含有专家排班),专家门诊,专病门诊(这个没做),疾病,咨询。这其中关系相对复杂一点,让我们用几个流程图来描述一下吧。

主要业务流程图。

咨询模块 

查看自己咨询问题。

2个人咨询

咨询问题解答流程

技术篇:

  这次开发很不凑巧,本来工期就赶,客户又是个懂技术的主,制定技术框架,没办法,面对之前自己没有接触过的技术,有着一些没有底气,但是又有些兴奋(对未知的东西探索),整体技术框架是springmvc,数据库实体层是jdo,这两个技术之前的项目都是没有用过的,不过幸运的是项目组其他成员他们之前稍微接触过,虽然不太深,通过和他们请教,交流,查资料,慢慢开始对这些技术有了一定的认知,熟悉。以下总结的一些技术知识点:

  1 spring mvc的技术架构。

     配置文件讲解:

          控制器配置文件:

        

控制器配置

         

Spring配置

      

2 Jdo配置文件:

3 JDO操作心得:

JDO中的语法确实和之前接触的hqlsql不太一样,很不习惯,操作起来不方便,特别是运算符,比如等于号必须是==(这个也是java语言中的运算符),andor还好它采用了java中通用的运算符&& &,之后还有in运算符,他竟然没有,虽然有个contain,但是不好用,也许是自己对它了解太浅了,以后的工作中要进一步研究它,毕竟是咱java的产物嘛。

赶紧jdo里面有些问题,不知道是它真有问题还是自己入门太浅,在项目开发过程中,话费了许多时间在jdo的关联上,项目组成员中不单单是我,还有其他组员也是类似情况。目前对于他的关联理解和运用稍微好一些,现在说一下它的关联吧。大概分为一对一、一对多、多对多三种方式的单双向关联,不过运用最多的一般都是一对一、一对多、多对多的情况很少运用到。下面举两个例子吧。

Jdo一对多双向关联

咨询表中配置userinfo

      <class name="Advisory" table="advisory"

identity-type="application" detachable="true">

<field name="advisoryuuid" persistence-modifier="persistent"

primary-key="true">

<column name="advisoryuuid" length="40" />

</field>

<field name="userinfo" persistence-modifier="persistent">

<column name="userUUID" />

</field>

Userinfo中配置advisoryes集合

<field name="advisories" persistence-modifier="persistent"

mapped-by="userinfo">

<collectionelement-type="com.seaway.hs.gh.portal.vo.Advisory" />

</field>

此处顺便提醒一下,jdo单项关联时候,引用方在insert时容易出现关联字段重复,此问题是偶尔会出现,为了保险起见,在大家使用过程中,如果需要用到单项关联插入时候尽量改为双向关联。

   JDO中另外一个问题:在进行对象多级关联时,如果进行更新,进行级联更新是存在问题的,他会将关联对象进行插入,此问题始终没有找到好的解决办法,最终采取变通办法,先将关联子对象删除,然后再进行saveorupdate。

  Jdo的多级关联时到二级关联时,如果需要调用子对象,需要在jdo的事务中显示的调用一下get方法将该子对象取出,这样才能在脱离事务时候取出该对象。如果关联到三级以下的时候需要配置一个fethgroup,深度配置为你要关联的深度,这样你需要在取出该对象的时候将该深度设置到你的query中。事例代码如下:

在需要配置的字段上进行加上一下配置

<fetch-group name="hospplan">

<field name="hospitalDiseases" recursion-depth="3" />

</fetch-group>

在代码中进行如下引用:

public Object doInJdo(PersistenceManager pm) throws JDOException {

// TODO Auto-generated method stub

FetchPlan fp = pm.getFetchPlan();

fp.addGroup("hospplan");

fp.setMaxFetchDepth(3);

Query query = pm

.newQuery("select from com.seaway.hs.guahao.bshandle.vo.Hospital where hospitaluuid=='"

+ hosptailid + "'");

Object object = query.execute();

return object;

4 Spring MVC架构心得:

  配置以上都已经进行讲解过,下面将一些在做项目中遇到的问题吧!

     该架构之前也是没有接触过的,但是这个编程思想很熟悉的,前台利用jstl标签,然后配合分页page标签,基本上的展现方式都可以完成了。后台利用spring提供的controller进行对跳转进行控制。感觉用着还是挺方便的。

     Spring MVC架构中感觉最方便地方在于Spring提供的controllerview层 ,controller继承与simplerControllerSpring已经替我们托管了控制功能,只需要配置跳转路径,可以在spring配置文件中配置对应的后缀,然后只进行配置文件名,跳转是spring会自动加上后缀名然后进行跳转。

     

 

经验篇:

  

 经过这个项目,增加了我对医疗行业的一个认识,第一次感觉医疗系统这么庞大,关系这么复杂,医院,科室,专家,疾病,这些也许是医疗行业的冰山一角,还没有涉及到药品,医疗器械,等看病了流程。感觉收获蛮不错,另外这个项目是个公益性质的,感觉很有自豪感,虽然有时候加班加点感觉累,但是,想想做的东西是为人民谋福利的,感觉值,至少自己的工作是有意义的。在这个项目中学到 了两个新的技术架构,稍微欠缺的是这个项目时间紧,设计工作都没有做,感觉做的时候缺乏规范性,代码中,自己尽量做到规范,注释也越来越规范,感觉这样可以 指导自己进行理清思路,进行编码。希望以后工作中,能给设计做好,然后进行编码时候可以进行指导自己的思想,以及团队的步伐一致性。

项目中的不足:

      1 JDO的学习和使用,以及项目中的调试花费了较长时间,特别是在进行调试JDO的关联关系时候,浪费了一部分时间。

      2 项目背景不熟悉导致梳理业务流程花费了一部分沟通理解时间。

      3 管理平台中的页面层次操作不方便,将医院、科室、专家门诊、专家的添加放到一块在用户操作体验上不太好,代码实现上出现许多冗余,同一个功能在不同环境下跳转到不同页面这样导致jsp,以及controller增多。

      4 代码重用性不够高,建议在二期中设计出的框架考虑一下代码重用以及增加js权重来减少代码冗余。

      

总结:

  从四月七号左右加入项目组,到现在差不多一个月了,对该项目进行加班加点,感觉从开始对项目的不了解,到后来大家慢慢探讨,感觉这个项目时间虽然紧,但是总体来说还算是成功的一个项目,虽然需求搞了好长时间,但是搞清楚了,之后需求和数据库字段都很少有改动了,这个很大程度上也保证了这个项目的成功。技术上有些难点,大家都很热心,耐心的帮助,特别是柳钢和李智慧他们,虽然他们也不太熟,但是他们在我们都束手无策的时候耐心的帮助我们,让我们看到这个项目的成功的希望。很喜欢这个团队的工作,大家工作起来也很愉快。

你可能感兴趣的:(spring,mvc,工作,框架,医疗,咨询)