之前SSH框架已经搭建完毕,现在进行实体类的分析和Base类的书写。Base类是抽象类,专门用于继承。
一、实体类关系分析
既然是数据采集系统,首先调查实体(Survey)是一定要有的,一个调查有多个页面(Page),一个页面有多个问题(Question),所以还要有页面和问题实体。参与完成调查之后一定还会生成若干个答案,所以还有答案实体(Answer),当然还有参与的用户(User),管理员是特殊的User,只需要登陆的时候进行判断即可。
分析实体类型是比较简单的,最重要的是设计,怎样设计才能满足调查中所需要的各种字段要求?各个实体之间是否有关系,如果有关系是否需要做双向关联(hibernate配置文件中声明)?。
首先从User实体开始分析,一个用户可以参与多个调查,一个调查可以被多个用户参与,所以User和Survey实体之间是典型的多对多关系。既然有有关系了,那么是否需要做双向关联?我们经常做的是根据User对象拿到该User对象拥有的所有Survey,我们基本上不会用到根据Survey对象取得User对象,所以我们只需要做User到Survey的多对多映射关系即可,这么做也是为了减小Session的存储压力,毕竟如果全部做双向关联,登陆之后将User保存到Session,好像只是保存了User对象,实际上隐式的保存了所有的调查。
Survey实体和Page以及User均有关系,但是不做到User的多对多关系的映射。Survey和Page之间是一对多的关系,一个页面只能出现在一个Survey中,但是一个Survey中能够有多个Page。既然两者有关系,是需要做两者的双向关联关系还是单向关联关系?我们会根据Survey对象获取该对象的所有Page,也会根据该Page获取该页面属于哪一个Survey对象,所以我们需要做双向关联关系,即做Survey到Page的一对多映射和做Page到Survey的多对一映射。
Page实体和Question同理,我们需要做Page到Quesiton的一对多映射,也需要做Question到Page的多对一映射。
Answer实体暂时不作考虑。
二、实体属性分析
1.