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。

    评论

报告相同问题?

悬赏问题

  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败