thomascb 2016-03-31 10:12 采纳率: 0%
浏览 2288

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

在 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条回答

  • threenewbee 2016-03-31 10:18
    关注

    但是你的具体问题是什么呢?你需要的就是映射这些表和处理外键的关联,dao返回查询的数据给bll。

    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大