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

问题描述

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

解决方案

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

解决方案二:

struts2+hibernate+spring分页实现(DAO,Service,Action三层架构搭配)

时间: 2024-10-31 19:31:34

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

三层架构中,层与层之间返回消息,怎么实现比较好?

问题描述 三层架构中,层与层之间返回消息,怎么实现比较好?举个例子:比如UI层调用业务逻辑层,业务逻辑层会告诉UI层:操作成功.或者用户没有该操作权限.内部报错啊等等之类的消息.请教一下各位有经验的朋友们,这种层与层之间的信息通信怎么设计和实现比较好.谢谢! 解决方案 解决方案二:执行结果之类的直接用INT就可以再标准点就用ENUM但是要是返回一张表最好自定义类来实现比较好解决方案三:或者用户没有该操作权限.内部报错啊===这些可以添加TRY..CATCH捕获到异常直接在BLL抛出WEB写个基类

c#-MVC三层架构中的的添加功能怎么写

问题描述 MVC三层架构中的的添加功能怎么写 在MVC 三层架构中 DAL层的代码怎么写 BLL层的代码怎么写 视图中的模板页怎么用 解决方案 MVC不过是个编程规则,指导思想,它只是在指引技术应该怎样设计 搞.NET的话有ASP.NET MVC,具体下载个PDF或者视频啃啃吧 解决方案二: 好像没有三层架构的概念,在你建好各个类拉好关系后会自动生成数据库,也可以用自己建的数据库(要完全对应),如果你要三层架构是要操作数据库的话 mvc我是用Tolinq(就像在cs写sql语句一样),把数据结果

三层架构中数据库访问的问题

问题描述 这里主要是想问一个结构的问题.当然我测试链接成功以后,我关闭了数据库配置界面.内存里面其实是把我点击测试链接以后的数据给释放了.再返回到登录验证用户名这个环节的时候,无法执行一些SQL的查询语句了.有什么方法可以让数据库连接保存或者下来.或者一般在三层架构中,数据库链接这块,是放在DAL这层去处理?还是说哪一层?特别小白的一个问题,感谢大家指导! 解决方案 解决方案二:起码数据库连接对象不应该放在窗体中,这样的话它会随着窗体释放而被回收解决方案三:这不是结构问题,而是流程问题测试数据库

【转】谈谈三层架构中MODEL的作用

Model又叫实体类,这个东西,大家可能觉得不好分层.包括我以前在内,是这样理解的:UI<-->Model<-->BLL<-->Model<-->DAL,如此则认为Model在各层之间起到了一个数据传输的桥梁作用.不过在这里,我们不是把事情想简单,而是想复杂了.     Model是什么?它什么也不是!它在三层架构中是可有可无的.它其实就是面向对象编程中最基本的东西:类.一个桌子是一个类,一条新闻也是一个类,int.string.doublie等也是类,它仅

spring声明式事务,service层必须在ioc容器中声明?

问题描述 各位,小弟在学习spring+hibernate 声明式事务时,发现一个问题, 做了两种测试1. 建立一个普通的 java projectx.y.services 包下有 applicationContext.xml, DefaultFooService.java, 在applicationContext.xml中对DefaultFooService进行声明式事务,并注入 DefaultFooService运行后成功实现事务管理2. 建立一个 web dynamic project在a

三层架构中找不到命名空间问题

问题描述 找不到类型或命名空间名称"ComboBox"(是否缺少using指令或程序集引用?):未能找到元数据文件.怎么解决啊,我刚学三层架构,很简单的一个小项目,都没用上models,请大侠们帮帮忙. 解决方案 解决方案二:在WindowsFormApplication工程以外的地方,用到了ComboBox?(需要添加System.Windows.Forms.dll)usingSystem.Windows.Forms;但这显然是不好的设计.解决方案三:引用1楼fangxinggood

基于LINQ TO SQL的多层架构中,如何将实体附加至不同的DataContext

注意: 1.本文中所提到的"实体"均为由LINQ TO SQL生成的(即.dbml) 2.你需要了解LINQ TO SQL对表关联的实现方式,EntitySet 和 EntityRef 也许你看到标题后,会觉得问题比较抽象,那么我举个实例来具体说明一下问题. 在基于LINQ TO SQL的N层架构中,假如我们需要对一个实体进行更新,那么流程应是这样: 流程 BLL.GetModel(p=>p.id==1) --> 修改相应属性(字段)值 --> BLL.Update(

三层架构中业务逻辑层的实现方式有哪些

问题描述 如题,比如说webservice,最好是应用程序和网页都能调用的接口 解决方案 解决方案二:BLL层一般都是继承接口实现,使用接口可以扩展业务逻辑.解决方案三:引用1楼duanzi_peng的回复: BLL层一般都是继承接口实现,使用接口可以扩展业务逻辑. 我就是想问接口的实现技术有哪些解决方案四:目前比较流行的是wcf解决方案五:所谓"业务逻辑",就是你的业务所需要处理的逻辑呀!虽然数据的增删改查也是业务,但一般直接放在数据访问层实现.举个例子,你用三层来实现登录的话,判断

有人在吗,问一下asp.net三层架构中不清楚的问题

问题描述 1,画面上的一些控件,对应不同表的数据,是应该用不同表对应的实体来填充,还是针对画面上的控件,在单独整一个实体出来2,商业逻辑层,如果是针对多表的复杂操作,应该放在哪里3,bll层查询返回多行时,用datatable就可以,有必要用对象的集合吗,感觉多此一举 解决方案 解决方案二:以下只是本人的想法:1,对于像列表这种实体绑定,如果字段太多可以根据显示的要求,整一个只读的实体出来.2,可以用存储过程中进行.3,面向对象用实体类集合有更好的封装.还有就是datatable不是强类型的.解