论坛首页 Java企业应用论坛

为什么java里不能把域对象和DAO合并,rails里面就可以?

浏览 28969 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-02  
实际上,直觉告诉我,RoR这样的做法是非常让人头大的事情。虽然我没有办法说明原因,但是,就像第一眼见到EJB一样,感觉不好。
但是EJB不能代表Java,所以我做Java,不做EJB。

Robbin刚才一句话把Java一棍子打死,而RoR就像是救世主。
0 请登录后投票
   发表时间:2007-03-02  
在springside2里面Sevice与DAO是合并的
而Domain Object模式可能要 依靠到spring+aop(静态织入)了 才能
更好的做到
0 请登录后投票
   发表时间:2007-03-02  
basicbest 写道
实际上,直觉告诉我,RoR这样的做法是非常让人头大的事情。虽然我没有办法说明原因,但是,就像第一眼见到EJB一样,感觉不好。
但是EJB不能代表Java,所以我做Java,不做EJB。

Robbin刚才一句话把Java一棍子打死,而RoR就像是救世主。


我可没有说RoR是救世主,也没有把Java打死,我只是就事论事,在实现Domain Model这个企业应用架构模式方面RoR的确领先于Java。Java目前无论是用哪个先进的框架,也无法很方便的实现Martin Fowler提倡的Rich Domain Model(用AspectJ静态织入可以做到,但是很麻烦,而且有侵入性),所以现在都是贫血的持久对象,基本上没有什么domain logic。但是RoR事实上就是Rich Domain Model,domain logic就是可以写在domain model里面,所以事实上RoR更加符合可复用的面向对象企业应用组件的要求。

0 请登录后投票
   发表时间:2007-03-02  
robbin 写道
basicbest 写道
实际上,直觉告诉我,RoR这样的做法是非常让人头大的事情。虽然我没有办法说明原因,但是,就像第一眼见到EJB一样,感觉不好。
但是EJB不能代表Java,所以我做Java,不做EJB。

Robbin刚才一句话把Java一棍子打死,而RoR就像是救世主。


我可没有说RoR是救世主,也没有把Java打死,我只是就事论事,在实现Domain Model这个企业应用架构模式方面RoR的确领先于Java。Java目前无论是用哪个先进的框架,也无法很方便的实现Martin Fowler提倡的Rich Domain Model(用AspectJ静态织入可以做到,但是很麻烦,而且有侵入性),所以现在都是贫血的持久对象,基本上没有什么domain logic。但是RoR事实上就是Rich Domain Model,domain logic就是可以写在domain model里面,所以事实上RoR更加符合可复用的面向对象企业应用组件的要求。



你把Hibernate和Spring去掉,我反而相对认同些这个,哈哈
Java在处理Domain Logic方面确实麻烦,头不是两个大!

突然想起来,某日在某聊天室某女不爽的原因。我当时和robbin做了同样的事情,呵呵
0 请登录后投票
   发表时间:2007-03-02  
对robbin的一些看法,我不是很认同:
-“认为RoR这种快捷的开发方式无法做复杂的企业应用。认为数据库表越多,Java越适应,其实这完全是自己毫无根据的臆测。”
:这个臆测看来不是我做出而是robbin“臆测”了我想表达的意思,我只是想通过后台数据库表的数量说明一个事实,那就是企业应用的复杂度要远高于一般的互联网应用,只是从表数量上面做个举例说明。如果纯粹去讨论如何影射多少张表或则实现多少种数据关系去看待java-ee和ruby-rail的对比,这也太过于肤浅。

-“目前Java的框架还不能很好的实现Domain Model...使用Hibernate的方式也是贫血的Domain Model,这种方式被Martin Fowler所批评。但是在Java里面要让domain不贫血,是很困难的,技术实现上目前难度很大"
:我认为模型是死的,语言和技术是发展的,在发展中总能解决当前的桎梏,请问robbin,难度在什么地方,能否仔细谈谈,比如从rr的实现方式,对比java可能的实现途径,这么谈才有说服力,虽然martin fowler这位大师也做出论断,但是不能因为大师之言就望而止步,很容易造成技术迷信,不利于技术在思维的碰撞中澄清和发展。

-“反而RoR是天然的Rich Domain Model,所以从软件架构上来讲,对于复杂软件的可重用性,业务逻辑的表达能力上,理论上RoR要超过Java。没有任何理由认为复杂企业软件,Java能够比RoR表现的更好。”
:那么说java无法实现rich domain model了吗?这种想法很是恐怖,若是如此,看来java做的系统原来都存在先天缺陷了,这个结论看来更加恐怖。
0 请登录后投票
   发表时间:2007-03-02  
newman 写道
对robbin的一些看法,我不是很认同:
-“认为RoR这种快捷的开发方式无法做复杂的企业应用。认为数据库表越多,Java越适应,其实这完全是自己毫无根据的臆测。”
:这个臆测看来不是我做出而是robbin“臆测”了我想表达的意思,我只是想通过后台数据库表的数量说明一个事实,那就是企业应用的复杂度要远高于一般的互联网应用,只是从表数量上面做个举例说明。如果纯粹去讨论如何影射多少张表或则实现多少种数据关系去看待java-ee和ruby-rail的对比,这也太过于肤浅。

-“目前Java的框架还不能很好的实现Domain Model...使用Hibernate的方式也是贫血的Domain Model,这种方式被Martin Fowler所批评。但是在Java里面要让domain不贫血,是很困难的,技术实现上目前难度很大"
:我认为模型是死的,语言和技术是发展的,在发展中总能解决当前的桎梏,请问robbin,难度在什么地方,能否仔细谈谈,比如从rr的实现方式,对比java可能的实现途径,这么谈才有说服力,虽然martin fowler这位大师也做出论断,但是不能因为大师之言就望而止步,很容易造成技术迷信,不利于技术在思维的碰撞中澄清和发展。

-“反而RoR是天然的Rich Domain Model,所以从软件架构上来讲,对于复杂软件的可重用性,业务逻辑的表达能力上,理论上RoR要超过Java。没有任何理由认为复杂企业软件,Java能够比RoR表现的更好。”
:那么说java无法实现rich domain model了吗?这种想法很是恐怖,若是如此,看来java做的系统原来都存在先天缺陷了,这个结论看来更加恐怖。


真受不了你们。我没有说Java无法实现Rich domain model,我只说技术上很困难,需要通过AsjectJ静态织入去实现,很麻烦。磨嘴皮子没什么意思,给你们出道题目吧:

User类,有属性name, password, gender, department, salary, tasks(员工当前的工作任务)

Task类,有属性name, duration, owner(谁来做)

有这样的业务逻辑:
1、统计某个部门的薪水总和
2、统计某个员工的工作量
3、统计某个部门的总工作量

请用Java语言进行建模,可以使用DAO接口隔离持久化操作,请应用Martin Fowler的PoEAA中的Rich Domain Model模式。请给出你的Java代码











0 请登录后投票
   发表时间:2007-03-02  
原则上,我不认同robbin的看法,但是,对与他把Hibernate和Spring去掉以后所下的结论,我可以理解,毕竟每个人一个观点。但是我也希望robbin能够给出实例说明。
DomainLogic对于Java很麻烦,但是我也没有见过不麻烦的,至少从RoR上没有看出什么优势。
Martin Fowler只是一个人,他的观点有的时候我也觉得偏激了,只是他经验多些而已,但并不说明他是正确的。
还有一点,Domain Logic如何界定,如果我们无法界定Domain Logic本身的话,我们在这里也只是空谈,那么Robbin的结论就更加欠妥了。
0 请登录后投票
   发表时间:2007-03-02  
我认为ROR那种ActiveRecord才是王道

如果domain model里没有dao的支持,根本无法清晰,漂亮的实现复杂的业务逻辑,那还是事物脚本,基本谈不上是domain model,我现在项目里使用的是让domain object知道spring的上下文,自己来主动找自己需要的dao,模拟一下rich domain,不过还是不如ror爽...
0 请登录后投票
   发表时间:2007-03-02  
robbin 写道

真受不了你们。我没有说Java无法实现Rich domain model,我只说技术上很困难,需要通过AsjectJ静态织入去实现,很麻烦。磨嘴皮子没什么意思,给你们出道题目吧:

User类,有属性name, password, gender, department, salary, tasks(员工当前的工作任务)

Task类,有属性name, duration, owner(谁来做)

请用Java语言进行建模,可以使用DAO接口隔离持久化操作,请应用Martin Fowler的PoEAA中的Rich Domain Model模式。请给出你的Java代码



晕,又是标准的技术性踢皮球
0 请登录后投票
   发表时间:2007-03-03  
basicbest 写道
原则上,我不认同robbin的看法,但是,对与他把Hibernate和Spring去掉以后所下的结论,我可以理解,毕竟每个人一个观点。但是我也希望robbin能够给出实例说明。
DomainLogic对于Java很麻烦,但是我也没有见过不麻烦的,至少从RoR上没有看出什么优势。
Martin Fowler只是一个人,他的观点有的时候我也觉得偏激了,只是他经验多些而已,但并不说明他是正确的。
还有一点,Domain Logic如何界定,如果我们无法界定Domain Logic本身的话,我们在这里也只是空谈,那么Robbin的结论就更加欠妥了。


非常简单的应用场景我已经给出来了。既然你不认同我的观点,请你写出用Java实现上述应用场景的代码,不要一昧回避。至于domain logic的定义是什么,怎么界定domain logic,如果你连这个都搞不清楚,那么请翻一下PoEAA,上面有非常明确的定义,用不着我在这里浪费笔墨复述。


0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics