分散式DAO
来源:互联网 发布:淘宝网t恤 编辑:程序博客网 时间:2024/06/02 22:21
分散式DAO
有这样一种需求,业务层有一个类,封装了有关学生的一切操作,例如学生基本信息操作,学生宿舍信息操作
实现具体操作使用的是dao的数据访问接口IStudentDAO,该接口描述了学生相关的所有操作
而在DAO层实现该接口的是两个不同的DAO,studentDAO和dromDAO,连个DAO分别实现了该接口IStudentDAO
我自己管这种模式叫做“分散式DAO”
在studentDAO实现了学生相关的数据操作,而在dromDAO实现了宿舍的相关数据操作,假设在业务层,需要一个功能“为学
生安排宿舍”,该功能要求:
1.为学生安排宿舍以后,该学生的宿舍属性为目标宿舍。
2.每安排一名学生进入宿舍,该宿舍的入住人数+1。(解决这一问题还有一种方法就是将studentsSet.size()插入“现在居住人数”,但是此方法需要对学
生二次查询,为了这样一个小需求进行二次查询显然不划算)
3.为学生选择的宿舍必须和学生性别一致,不能将男生安排到女生宿舍,反之相同
4.为学生选择的宿舍必须是未住满的宿舍,例如drom有8个床位,现有8个人居住,就不能将第九个人安排到该宿舍
这个功能需要对两个实体都进行操作,而两个DAO又实现了同一个接口,需要在两个DAO里面都分别实现所有的描述,这时,业务层怎么知道调用的是学生DAO
的方法还是宿舍DAO的方法?
这时就需要用的java一“得以技”--“upcasting”
在业务层这样使用接口:
private IStudentDAO studentDAO = new StudentDAO();
private IStudentDAO studentDromDAO = new DromDAO();
这时需要对宿舍的操作就使用studentDromDAO,对学生的操作就使用studentDAO,例如:
public getOkDrom(Student student){ //获取合适的宿舍,操作对象:Drom
studentDAO.getOkDrom(Studnet studnet);
}
public studentIntoDrom(Student student,Drom drom){ //安排学生宿舍,操作对象Student,Drom
Student stu = new Student();
Drom dro = new Drom();
dro.setId(drom.getId());
dro.setNowPerson(drom.getNowPerson()-1);
stu.setId(student.getId());
stu.setDrom(dro);
studentDAO.reStudent(stu);//DAO具体实现注意1)
studentDromDAO.reDrom(dro);//DAO具体实现注意1)
}
有这样一种需求,业务层有一个类,封装了有关学生的一切操作,例如学生基本信息操作,学生宿舍信息操作
实现具体操作使用的是dao的数据访问接口IStudentDAO,该接口描述了学生相关的所有操作
而在DAO层实现该接口的是两个不同的DAO,studentDAO和dromDAO,连个DAO分别实现了该接口IStudentDAO
我自己管这种模式叫做“分散式DAO”
在studentDAO实现了学生相关的数据操作,而在dromDAO实现了宿舍的相关数据操作,假设在业务层,需要一个功能“为学
生安排宿舍”,该功能要求:
1.为学生安排宿舍以后,该学生的宿舍属性为目标宿舍。
2.每安排一名学生进入宿舍,该宿舍的入住人数+1。(解决这一问题还有一种方法就是将studentsSet.size()插入“现在居住人数”,但是此方法需要对学
生二次查询,为了这样一个小需求进行二次查询显然不划算)
3.为学生选择的宿舍必须和学生性别一致,不能将男生安排到女生宿舍,反之相同
4.为学生选择的宿舍必须是未住满的宿舍,例如drom有8个床位,现有8个人居住,就不能将第九个人安排到该宿舍
这个功能需要对两个实体都进行操作,而两个DAO又实现了同一个接口,需要在两个DAO里面都分别实现所有的描述,这时,业务层怎么知道调用的是学生DAO
的方法还是宿舍DAO的方法?
这时就需要用的java一“得以技”--“upcasting”
在业务层这样使用接口:
private IStudentDAO studentDAO = new StudentDAO();
private IStudentDAO studentDromDAO = new DromDAO();
这时需要对宿舍的操作就使用studentDromDAO,对学生的操作就使用studentDAO,例如:
public getOkDrom(Student student){ //获取合适的宿舍,操作对象:Drom
studentDAO.getOkDrom(Studnet studnet);
}
public studentIntoDrom(Student student,Drom drom){ //安排学生宿舍,操作对象Student,Drom
Student stu = new Student();
Drom dro = new Drom();
dro.setId(drom.getId());
dro.setNowPerson(drom.getNowPerson()-1);
stu.setId(student.getId());
stu.setDrom(dro);
studentDAO.reStudent(stu);//DAO具体实现注意1)
studentDromDAO.reDrom(dro);//DAO具体实现注意1)
}
- 分散式DAO
- 分散式用户操作手册
- OpenID 分散式身份验证系统
- 調用MSDTC控制分散式Transaction
- openId分散式用户识别系统
- 怎样管理一个分散式的团队
- VB.NET的分散式设计
- 李维 《使用Delphi开发分散式JSON应用系统》
- 报导称中国军方建立分散式网络战民兵
- 同构分散式数据库数据汇总(集成)
- Android使用属性动画,实现分散式弹出菜单
- 密钥分散
- 分散配置
- 分散配置
- 分散加载
- 分散精力
- DAO
- DAO
- 一个iBatis框架进行batch处理的问题
- 截取部分字段(数据库)
- 字段截取(数据库)
- 使用hibernate的延迟加载策略
- 怎样禁止掉c$/d$自动共享
- 分散式DAO
- 上传图片
- 分析及解决SQLServer死锁问题 (SQL2005)
- 能得到多少种启发
- 编程技术点滴三(C/C++)
- BCC55 ALL IN ONE CONTINUE 3
- [转]水晶报表列太多导致设计界面容纳不下的解决方法 [http://blog.csdn.net/lupenda/archive/2005/08/12/452878.aspx]
- 软件设计师浙江省发合格人员名单了
- Ubuntu下NetBeans环境的配置