在线250人
首页
主题总表
培训咨询
精华
查搜
注册
登陆
用户
自动登陆
密码
新用户注册
忘记密码?
首页
»
论坛
»
项目工程开发经验谈
上一主题
大家对分页都很熟悉了,我上个项目是这样分页的,大家看看整个过程是否有潜力可挖. 基本记录分 Id,title,concept三项,用户可以对它们进行组合查询(非SQL)取得数据并排序,我的处理过..
返回本主题
返回主题列表
下一主题
如题,再次感谢!!
1
2
►
Go
总共有
15
回复 /
2
页
前往下页:
uffcellan
悄悄话
发表文章: 1
注册时间: 2006年07月18日 11:06
面向ο蠓治`^程
2006年07月18日 11:14
标签列表
面向ο蠓治鲇朐O->O->面O
面向ο蠓治鲇朐O完成了怎N^度到O??
我是菜B,以前只程序,]⒂脒^O方面。公司目前要我O一叫系y。
但老板先叫我Oprototype,之後O,@好象和面向ο蠓催^砹恕
大家@符合幔浚
blues
悄悄话
发表文章: 74
注册时间: 2002年09月23日 17:07
Re: 面向ο蠓治`^程
2006年07月19日 12:49
合乎逻辑.怎么样能把事情做好了,都合乎逻辑.
有一种办法是:建模->根据Entity/Relation来确定数据库设计.
不过我建议你尽快做出来原型,可能你的leader关心的不是你现在提出的问题.
banq
悄悄话
发表文章: 9312
注册时间: 2002年08月03日 17:08
Re: 面向ο蠓治`^程
2006年07月24日 16:52
>我Oprototype,之後O,@好象和面向ο蠓催^砹
是的,反过来了,数据库是不会参与设计中的。
数据库是什么?是数据持久化,打个比喻,你在windows下编辑文本时?是否需要首先在打字时考虑字体持久化到硬盘上的技术细节?肯定不是,而是直接进入业务:打字。
那么在业务过程中:打字时,是否你每打一个字持久化一下(也就是保存一次)?我想没人这样做!那么为什么我们做企业系统时,每次客户端一个交互都要持久化一次(也就是每次request都保存数据库呢)?
所以,专注数据库技术显然过于细节。
banq
悄悄话
发表文章: 9312
注册时间: 2002年08月03日 17:08
Re: 面向ο蠓治`^程
2006年07月24日 17:04
看看
DDD
领域驱动设计,直至软件系统部署,数据库才被产生出来(使用
Hibernate
等技术)。
DDD;领域设计过程是:
领域建模--->Model/Service---->表现层、业务层和持久层同时开工,具体细节:
1.表现层负责界面离散数据和Model Mapping映射,如使用
Struts
2.持久层负责将Model持久化,使用
Hibernate
/EJB的实体Bean技术只要做好Mapping配置即可,无需设计数据库,如果你设计数据库,就发生Model和数据库不匹配现象,两强相争,必有一伤害,哪方做出让步,一般是软件
OO
比较容易修改,结果不应该让步的一方作出让步,这是错误的。
3.业务层:完成Service具体实现。由于使用
IOC
之类框架,使得三层解耦非常好,不互相依赖,业务层关键是应用服务层Service的实现,包括组件技术、模式应用等等,DDD在这方面讲得比较详细。
DDD领域建模其实是告诉我们业务层如何做?使用
DDD
。
总之,在完全面向对象中,数据库驱动设计方式已经抛弃,数据库时代已经结束,能够接受这样思维的人很少,这是一场革命,相信多年后,它被大多数人接受,至少我现在是这样做。
为什么大家抱着数据库思路不放呢?其实是和教育培训有关,数据结构和算法一直是软件教育的经典,这种培训方式培养学生使用数学思维来设计软件习惯,实际在企业软件中,软件关键是如何快速应付变化,而不是数学公式如何高深,方向就错了。
可惜大家还在数据库设计这个错误思维方向上死不悔改,所以,我想通过Jdon来及早唤醒大家(可能自不量力)。
实战
DDD
(Domain-Driven Design领域驱动设计):
http://www.jdon.com/mda/ddd.html
banq
悄悄话
发表文章: 9312
注册时间: 2002年08月03日 17:08
Re: 面向ο蠓治`^程
2006年07月24日 17:59
续:如果不使用
DDD
,而单纯使用
Hibernate
或
Struts
这类框架,会出现什么样情况,换句话:如果不形成自己的
OO
分析设计思维,而霸王硬上弓,凑热闹跟着别人后面使用
Struts
/Hibernate这些框架,会产生什么结果?
结果是:干扰!不适应!别扭,总感觉不自然,到底哪里出问题呢?
见下面这个帖子,作者在使用
Hibernate
时明显感觉不适应和干扰了:
总觉得
Hibernate
影响设计思路
schlemiel
悄悄话
发表文章: 24
注册时间: 2005年09月07日 12:51
Re: 面向ο蠓治`^程
2006年07月25日 19:35
>那么为什么我们做企业系统时,每次客户端一个交互都要持久化一次(也就是每次request都保存数据库呢)?
赫赫,恐怕您也就做过web应用罢?您随便找个用delphi做过企业应用的人问问,哪有什么“每次request都保存数据库”这种事情?为什么要每次request都保存数据库?因为http是无状态的。用户通过http跟应用程序交互以后,要么找别的办法做客户端持久,要么做服务器端持久,要么就丢掉这次交互造成的状态变迁,就这么三种选择。我倒是很想请教您一下,如果不是“每次客户端一个交互都要持久化一次”,该怎么搞?您要是能在http上把这个问题解决了,估计明年的图灵奖都没得跑。
banq
悄悄话
发表文章: 9312
注册时间: 2002年08月03日 17:08
Re: 面向ο蠓治`^程
2006年07月26日 18:07
>如果不是“每次客户端一个交互都要持久化一次”,该怎么搞?
你没有在本站好好学习吧,先学习
DDD
,搞清楚什么是领域对象生命周期,贴文章给你:
状态对象:数据库的替代者
http://www.jdon.com/artichect/state.htm
你搞Delphi好像不错,怎么到Web没有反而忘了本,基础知识都没有了?
schlemiel
悄悄话
发表文章: 24
注册时间: 2005年09月07日 12:51
Re: 面向ο蠓治`^程
2006年07月26日 20:08
>先学习
DDD
,搞清楚什么是领域对象生命周期
sigh,哪有那么些复杂的事情。问题很显然地摆在这里:
HTTP是无状态的。用户一次交互之后,这次交互造成的影响(或者叫“状态变迁”在什么地方留存。
只有两条路可以选,要么客户端,要么服务器端。如果不是做ajax,不用数据岛,那么就是服务器端。我看你的文章讲的也是服务器端保存状态。要在服务器端保存状态,也只有两条路,要么应用程序内,要么应用程序外。要在应用程序内保存状态,你这个应用程序就别想分布,多台服务器的classloader不可能给你加载同一个Java对象。如果不想在你的Java对象里面管理用户状态,就得把用户交互的结果老老实实弄到应用程序外的持久化服务上,不管是数据库也好memcached也好,总之每次用户交互都要持久出去。你那个文章说什么“状态管理中间件”,莫非stateful session bean就不是持久化了?恕在下愚钝,我是看不出JNDI或者
缓存
文件跟数据库就有什么本质的区别。
wind13
悄悄话
发表文章: 59
注册时间: 2006年07月10日 18:52
Re: 面向ο蠓治`^程
2006年07月28日 09:55
彭所说是指不用每次在数据库中持久化,而是通过状态会话Bean或是实体Bean来保存状态,这些都是在内存中跑的,所以效率也会高些,等到一些步骤操作完成后,需要保存的时候才最后持久化到数据库中,这个情况就好象购物车的例子里,不是每次选个商品就要持久化到数据库中的。
schlemiel
悄悄话
发表文章: 24
注册时间: 2005年09月07日 12:51
Re: 面向ο蠓治`^程
2006年07月28日 15:43
> 彭所说是指不用每次在数据库中持久化,而是通过状态会话Bean或是实体Bean来保存状态,这些都是在内存中跑的,所以效率也会高些,等到一些步骤操作完成后,需要保存的时候才最后持久化到数据库中,这个情况就好象购物车的例子里,不是每次选个商品就要持久化到数据库中的。
板桥先生写了那些关于面向对象和领域建模的文章就算白写了,因为你压根就没看。为什么这么说?如果真正是领域驱动设计、模型驱动设计,你首先就要分出应用程序域和外部服务域。属于应用程序的东西,做对象建模;外部的持久服务,用repository去adapt。adapt了以后,你就不必关心这个持久服务是jndi还是数据库。如果已经是模型驱动设计了还念念不忘说“不要每次都持久到数据库”,你的隔离在哪里?你的设计分明就还在受数据库的影响么。你还说这是板桥先生的意思,岂不是诋毁板桥先生不懂模型驱动设计?
而且你这话说得实在外行。stateful session bean和entity bean在内存中保存状态?麻烦你告诉我怎么把一台服务器的内存状态复制到
集群
中的另一台服务器去。我一开始就说了,如果说既要在服务器保存用户操作造成的状态变迁、又要让应用程序可
集群
,就肯定要用外部的持久化服务。莫非你还打算诋毁板桥先生连这点常识都没有?
banq
悄悄话
发表文章: 9312
注册时间: 2002年08月03日 17:08
Re: 面向ο蠓治`^程
2006年07月28日 17:08
>要在应用程序内保存状态,你这个应用程序就别想分布,多台服务器的classloader不可能给你加载同一个Java对象。
这里我不想普及
缓存
概念,首先,在应用程序保存状态和是否需要分布是两个概念;其次,在应用程序保存状态通过JBossCache这样分布式
缓存
当然可以实现分布,象Jive3.0以后就使用了那个收费的分布式
缓存
(叫什么的 有些忘记)实现分布。
本课题讨论的是面向对象分析过程是否需要数据库设计,我们试图从领域建模角度讨论,而不能讲话题扩散开去,其实整个Jdon论坛自成立到现在,基本都是在讨论这个话题,所以。一旦扩散开去就涉及太多,对看贴的人也是不尊重。
schlemiel从“Http无状态”角度来看这个问题是一个新角度,其实关于领域对象的生命周期问题,在
DDD
中已经有很好的描述,大概在中译本87页,大家讨论起来如果有共同对话平台就容易沟通。
alexzhou
悄悄话
发表文章: 3
注册时间: 2006年07月31日 11:03
Re: 面向ο蠓治`^程
2006年07月31日 11:10
DDD是啥,我认为在设计过程中,有活动图,在这当中有很多的state,这些state很多是需要持久化的,这就是数据库设计的原型,而根据一些其他的数据库设计的习惯,和一些辅助的如用户权限等方面的考虑,就可以设计数据库了。 一般项目,客户或你的老板是希望有数据的设计出来的
banq
悄悄话
发表文章: 9312
注册时间: 2002年08月03日 17:08
Re: 面向ο蠓治`^程
2006年08月03日 16:03
在现代系统设计中,数据库影子基本看不见了。
大家可以查看开源软件的appFuse,在其中你都无法寻找到数据库SQL结构,甚至找不到
Hibernate
Mapping文件,它们都附属在Domain Model 对象中了。
https://appfuse.dev.java.net/
如果这么极端的例子无法接受,学习学习
JiveJdon
3,它也是一个
DDD
设计的案例,只是数据库使用了以前版本的,实现一个过渡衔接。
vcshcn
悄悄话
发表文章: 42
注册时间: 2003年12月28日 23:11
Re: 面向ο蠓治`^程
2006年08月10日 18:02
我没看过appfuse。是不是就是把持久化放到domain中去了?
vcshcn
悄悄话
发表文章: 42
注册时间: 2003年12月28日 23:11
Re: 面向ο蠓治`^程
2006年08月10日 18:04
把持久化放到domain中并不好,不易管理,不易测试,不易迁移
这个主题有
15
回复 /
2
页
Go
1
2
►
上一主题
返回本主题
返回主题列表
返回页首
下一主题
热点TAG:
AOP
cache
缓存
DDD
EJB
集群
设计模式
Hibernate
IOC
JiveJdon
OO
RBAC
Seam
Spring
Struts
正在读取,请等待...
查询本论坛内
近一天
近三天
近一周
近一月
近三月
近半年
近一年
所有
回复超过
的热门帖子
标题
内容
解惑之道在
J道
,打造中国最具影响力的的企业软件社区
OpenSource
JIVEJDON
v3.0
Powered by
JdonFramework
Code © 2002-08
jdon.com
anti spam