2013-05-20 15:02:44 在别处(562***95)
2013-05-20 15:02:49 在别处(562***95)
大家帮我看看这个时序图
2013-05-20 15:04:41 在别处(562***95)
是不是有问题? 上面的实体不是对象,而是一些动作,如会议申请、会议室使用
2013-05-20 15:05:40 京田晓江(7***6833)
这个会议的图号复杂啊!
2013-05-20 15:06:46 张旻(13****969)
你可以改成会议申请管理, 会议室管理呀
2013-05-20 15:07:05 张旻(137***969)
申请负责接收请求, 转发会议室查询可用会议室, 然后给用户选择最后通过
2013-05-20 15:07:15 张旻(137***969)
会议室是实体
2013-05-20 15:07:20 张旻(137***969)
会议申请也是实体
2013-05-20 15:07:27 张旻(137***969)
加上操作不就是对象么
2013-05-20 15:07:46 张旻(137***969)
你从数据库角度保存下来也就是申请记录和会议室使用记录
2013-05-20 15:08:06 在别处(562***95)
噢
2013-05-20 15:08:38 在别处(562***95)
你这样一说,感觉有点通了
2013-05-20 15:08:50 张旻(137***969)
呵呵, 我是DBA, 从数据先入手考虑的
2013-05-20 15:09:38 张旻(137***969)
而且最恨将业务逻辑封装到数据库SP的开发
2013-05-20 15:10:03 何煦(93***6)
这是不是就是潘老师讲的用设计去考虑需求?
2013-05-20 15:10:07 张旻(137***969)
数据库现在只做存储, 业务逻辑应该封装到业务层, 用数据库做并发控制是可耻的
2013-05-20 15:10:37 张旻(137***969)
数据驱动, 看产物干活
2013-05-20 15:10:59 张旻(137***969)
其实现实当中的确是存在专门管会议室的和专门管申请的
2013-05-20 15:12:43 (316530285)
用数据库做并发控制是可耻的,是什么意思,[表情]
2013-05-20 15:13:04 张旻(137***969)
ACID, 知道么
2013-05-20 15:13:27 张旻(137***969)
还有锁, 程序锁和数据锁都可以实现并发控制
2013-05-20 15:13:43 张旻(137***969)
设计的时候, 并发控制尽量放在应用层
2013-05-20 15:14:20 (316530285)
你可以想象一下没有数据库事务支持的系统开发吗?
2013-05-20 15:14:46 张旻(137***969)
但是不可以滥用
2013-05-20 15:15:10 张旻(137***969)
否则程序结构简单了, 但是性能会降低
2013-05-20 15:15:40 张旻(137***969)
呵呵, 主要是有感于实际工作中曾经遇到过的一些case
2013-05-20 15:16:38 张旻(137***969)
最NB是SQLSERVER的分布式事务被滥用, 一个请求吊住了N个数据库呵呵
2013-05-20 15:17:36 (316530285)
还有什么其他的case呢,很好奇
2013-05-20 15:18:28 张旻(137***969)
SQLSERVER有分布式事务的支持, 也就是从应用层面对于不同数据库进行锁控制
2013-05-20 15:18:37 张旻(137***969)
但是早期版本默认的锁是HOLDLCK
2013-05-20 15:18:43 张旻(137***969)
也就是全表串行化
2013-05-20 15:19:02 张旻(137***969)
没有地方可以更改, 后期有更改的地方变成READCOMMITTED的才好一些
2013-05-20 15:20:00 张旻(137***969)
但是研发并不知道, 开发工具从VS2005升级到VS2008, 数据库从SQL2005升级SQL2008以后, 触发了HOLDLCK参数导致整个数据库变乌龟
2013-05-20 15:20:15 何煦(93***6)
现在还有人这样写程序吗?很神奇
2013-05-20 15:20:40 张旻(137***969)
用的人对所使用的东西如果不够了解, 会发生这种情况的
2013-05-20 15:21:03 张旻(137***969)
他只知道分布式事务能够跨数据库, 但是没有深究具体的锁类型
2013-05-20 15:21:17 张旻(137***969)
以及平台和数据库升级对于现有机制的影响
2013-05-20 15:21:46 张旻(137***969)
不过现在Java + Oracle多了, 相对好一些了
2013-05-20 15:22:02 张旻(137***969)
细节决定成败嘛
2013-05-20 20:44:37 潘加宇(3504847)
核心责任应该是:会议室.申请()。创建用来记录申请细节的"申请"对象,改变状态。。。。应该藏在"申请"操作里面,逻辑由会议室的状态机封装
没有存储、暂存,入库,对象如何保存,加载,是设计问题,和领域概念无关,或者说对所有领域概念的套路是一样的。设计(实现)不必画UML,用典型用例的实现示例表达即可。 --控制类不负责封装逻辑,例如"校验"
|