2 sidan8 sidan8 于 2016.03.31 18:12 提问

关于三层架构中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高手云集希望能解开本鸟长久的疑惑

2个回答

caozhy
caozhy   Ds   Rxr 2016.03.31 18:18

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

sidan8
sidan8 哦 先有点事当午了怕页面过期,就先发布了,现在更新好了,谢谢你的回答
一年多之前 回复
CSDNXIAON
CSDNXIAON   2016.03.31 18:22

struts2+hibernate+spring分页实现(DAO,Service,Action三层架构搭配)
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!