J2EE中dao层和Service层的理解

谈一谈我对dao层和Service层的理解:

<wbr></wbr>

dao层:

最基本的CRUD操作,方法体里的内容一两句代码搞定。如this.save(student)等等。

<wbr></wbr>

Service层:

①可能调用多个dao。我有一个Service,叫StudentService。比如我存进去一个Student,利用的是StudentDao。我要把存入Student这个操作,记录到系统日志里面,我还要调用LogDao。这样,我就需要把两个Dao注入到StudentService里面。

<wbr></wbr>

②可能加入了逻辑判断。比如,我存入一个student对象,那么这个student对象可能是“添加”操作传来的,还是“更新”做操作传来的呢?那么我们就要加入逻辑判断:

<wbr></wbr>

public void add(Student s)
{
<wbr><wbr><strong>stuDao.save(ry);</strong></wbr></wbr>


<wbr><wbr>LOG<wbr>log = new LOG();<br><wbr><wbr>log.setCreator(s.getCreator());</wbr></wbr></wbr></wbr></wbr>

<wbr><wbr>log.setName("学生管理");<br><wbr><wbr>log.setTime(Utility.GetTime());<br><wbr><wbr>log.setDetial("录入学生信息<wbr><wbr> ID: " + s.getId() + ",姓名: " + s.getName);<br><wbr><wbr><strong>logDao.add(log);<br></strong><wbr>}</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

<wbr>public String saveStudent(String type, Student s)<br><wbr>{<br><wbr><wbr> String result = "";<br><wbr><wbr> if (StringUtil.checkNotNull(type) &amp;&amp; "add".equals(type))<br><wbr><wbr> {<br><wbr><wbr><wbr><wbr><wbr> add(s);<br><wbr><wbr><wbr><wbr><wbr> result = "添加成功";<br><wbr><wbr> }<br><wbr><wbr> ......................................更新操作<wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr>return result;<br><wbr>}</wbr></wbr></wbr></wbr>

<wbr></wbr>

<wbr></wbr>

有些很灵活较,较复杂的查询,五花八门的,干脆就在dao里面写好,Service直接调用好了^ ^。

<wbr></wbr>

本文还会再补充。

java 的三层架构一直有几个问题困扰着我一直不得解决,特在此请教各位大神,还请各位大大,不腻赐教 场景: 加入现在是一个教务系统里面包含数据库表 课程表,学生表,学生购买的课程表 课程表 ![图片说明](https://img-ask.csdn.net/upload/201603/31/1459418788_61589.png) 学生表 ![图片说明](https://img-ask.csdn.net/upload/201603/31/1459418843_922267.png) 学生购买的课程表 ![图片说明](https://img-ask.csdn.net/upload/201603/31/1459419063_436511.png) 这个时候如何设计实体类呢 学生实体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高手云集希望能解开本鸟长久的疑惑
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页