sidan8
thomascb
2016-03-31 10:12

关于三层架构中service dao 和实体的设计实现的疑问

  • 实体设计
  • dao层设计
  • service层设计

在 java 的三层架构中一直有几个问题困扰着我一直不得解决,特在此请教各位大神,还请各位大大,不腻赐教
场景:
加入现在是一个教务系统里面包含数据库表
课程表,学生表,学生购买的课程表

课程表
图片说明
学生表
图片说明
学生购买的课程表
图片说明
这个时候如何设计实体类呢

学生实体1

 public class student {
    private Integer id;
    private String name;
    private String birthday;
    private Integer schoolId;
    private Integer gradeId;
    private Integer classId;
}

学生实体2

 public class student {
    private Integer id;
    private String name;
    private String birthday;
    private School school;
    private Grade grade;
    private Classes classes;
}

学生实体3

 public class student {
    private Integer id;
    private String name;
    private String birthday;
    private School school;
    private Grade grade;
    private Classes classes;
    private List<Course> courseList;//已购买的课程
}

我们做的都是以"学生实体1"的方式在做,但是有些情况需要返回这个学生的基本信息和所属的学校 年级 班级的名称 就得在service层或者 controller层重新封装数据
感觉有点麻烦
还有在学生的个人中心的时候会有个学生购买的课程列表,这个列表里面包含课程的基本信息和上传该课程的老师的信息(老师实体)(如姓名,电话,信誉度等)
进行查询
查询某时间段内,某课程名称,某老师名称...的记录
这个时候就得在 controller层构造个查询的实体包含 时间段 课程名称的对象传递到service层再从service层传递到dao层再到数据库,数据库这个时候就得做关联查询了,
如果用这种方式关联太多感觉很混乱,还有返回的数据里面除了包含课程基本信息还有该课程所属老师的信息又得构造个实体,还有如果后期做数据拆分这个dao层的接口可能就不能用了,
哎,不知道表没表达清楚,就是如何设计来让需求改变和以后优化的时候尽量修改较小的设计方法,还有就是对如何设计service层不是很明白。
听闻csdn高手云集希望能解开本鸟长久的疑惑

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

1条回答

为你推荐

换一换