jpetstore的思考!

07-10-29 oojdon
banq老师,我是DDD和jdonframework的初学者,看完了jpetstore的代码,下一步准备用jdon做学校的系统和研究jdonjive3,我很想知道ddd思想在jpetstore中用到了多少,望老师详细解释,让晚生能够通过一个系统初步认识领域驱动设计,谢谢!

banq
2007-10-29 14:21
jpetstore也是依据DDD建模的一个简单应用,比如其中其Domain下的模型类,DDD建模思想是一个方法过程,但我们看到代码时,已经是这种方法过程的结果,所以单从代码方面很难学到结果之前的方法过程。

还是要多看看书籍,以及本论坛的DDD讨论。

oojdon
2007-10-29 17:51
谢谢老师的回复!我会在实践中努力培养oo思想,下面是运行jpetstore想到的几个刁钻问题:

1,商品批量查询用customizeListForm方法放了一个Category进去,而购物车批量查询时用重写setOneModel方法放入CartItems,这两种方法有何区别?

2,在购物车批量修改的时候,我发现Item的Quantity不能设置为0,当然这是无聊的操作,如果有此操作,后来所有数量修改都失效,同时该Item的Remove出错。

3,http://localhost/jpetstore/shop/newOrder.shtml?confirmed=true订单生成之后,我无意中后退到http://localhost/jpetstore/shop/confirmOrderForm.shtml点击coninue

后又生成了一份相同的订单,这个操作可以循环,这样的程序健壮吗?

4,在http://localhost/jpetstore/shop/listOrders.shtml页面点击OrderID进入http://localhost/jpetstore/shop/viewOrder.shtml?orderId=1000,发现页面有如下错误信息:

Something happened...

But no further information was provided.

5,Item中的product信息必须修改Product.xml中的sql语句实现多表查询,那么在dao层呢?Jdon的jdbc模板呢?可以做到吗?

[该贴被oojdon于2007-10-29 17:51修改过]

banq
2007-10-30 10:51
第一个问题:这只是展示两种使用方式,基本差不多。

第二个问题我暂时没发现。不过如果有是个BUG

第三个问题需要通过Session跟踪解决,JPestore只是一个DEMO,学习案例,不算成熟项目,否则就没有公式做电子商务软件了。

第5问题 这是IBatis框架,Jdon模板只是一个简单的模板,不能和专业持久层框架相比,Jdon框架是着重快速开发中小应用,并保证向中大型过度,所以,Jdon框架按照约定大于配置原则,提供一些简单模板,注意这是它的特点,它不会做大而全,大而全必然复杂,这是Spring/EJB的事情。

多谢你钻研,JPestore存在不少BUG,如果你愿意更改这些BUG,我们可以把你完善的JPetsotre供后来人再学习,如有兴趣可将更改后的JPetstore发到我信箱,注意署名,开源需要大家努力。

oojdon
2007-10-30 12:07
谢谢!我会努力学习jdon同时向同学们宣传,昨天在网上无意中发现这样一段对jdon框架的评价,不知老师的意见如何?

“从banq的材料来看EJB是被当做O/R Mapping来用的。而拿AOP仅仅用来做Cache的话,本来也无可厚非,不过他的业务代码中怎么都是这种:clearCache(); 如果真的使用了AOP,又怎么会需要手工写这种东西?Model类,就是每个域对象必须继承的Model类,它的代码实际上是管理Cache的。这种通过继承关系静态编程管理的Cache机制,并不是什么AOP。

就Cache部分代码来看,banq自己实现了cache部分全部代码,不过遗憾的是,正如banq自己宣传的那样,“无所不在的Cache”,整个框架代码无所不在的充斥着Cache的管理代码,实际上这已经违反框架各个功能模块松偶合的原则,与banq自己宣传的AOP方式实现cache,从而分离Cache关注点的原则背道而驰。造成的后果就是Cache的高度难以管理,以及在某些情况下不得不在业务代码中手工操作Cache(可见banq提供的demo)。

我建议大家有空可以看看Hibernate源代码部分是如何实现Cache的。Hibernate并不自己编写Cache代码,而是提供一个统一的对象Cache操作接口,提供给Hibernate其他功能模块使用,而这个统一的对象Cache接口下面编写了不同的Cache的Provider类,你可以方便的切换各种Cache实现,Hibernate其他部分完全无需关注,这种模块化的设计才是漂亮的方式。

此外jdonframework分别依赖如下库:

aopalliance.jar

servlet.jar

ejb.jar

jdom.jar

log4j-1.2.8.jar

jms.jar

hibernate2.jar

apache-common的包

pico Container的包

JBoss App Server的包

Castor的包

Struts的包

这意味着你必须在一个J2EE兼容的App Server上面才可以运行,而无法在Web container上面运行。特别的,框架Security部分代码紧密偶合JBoss的Security的类,这意味着该框架甚至无法在最主流的Websphere/WebLogic上面运行,而锁定在JBoss App Server上面。”

banq
2007-10-30 14:40
楼上自责大概针对JdonFramework 1.0,由于推出之前没有任何征兆,批评者没有静心深入研究Jdon框架,或者说对AOP/IOC没有真正了解,所以这些对Jdon框架Cache指责基本都是错误的,我已经展示了如何优雅的象Hibernate以Ehcache替换原来的cache。

见这个帖子:

http://www.jdon.com/jivejdon/forum/messageList.shtml?thread=32694&message=23110878#23110878

关于Jdon框架依赖的库为什么不下载最新版本看看?当然不是那些库(库包后来进行了整理,删除一些不用的库包)。

关于权限,请参考JavaEE标准,凡是J2EE服务器都提供标准的安全框架支持,这些也是他需要普及的一个基础知识:

http://www.jdon.com/idea/jaas/06001.htm

如果你是来学习的,那么就在这里提问,不要引用乱七八糟的人的言论。相信自己的判断。

Jdon框架当初起点是很高,站在世界软件前列,2004年底出来遭受很多所谓高手攻击,他们错误的观点都是由于他们不愿意相信国人会有精品框架出现。到现在他们宁可捧JBoss Seam洋臭脚,都不愿意对早于Seam出现的国产Jdon框架有所提及,跟随不能丢失方向和自己的判断(当然Seam和JDON瞄准方向不太一样,Seam是JSF+SEAM+EJB3组合首选)。

以上都无关JPestore,请到jdon框架论坛提问。

[该贴被banq于2007-10-30 15:44修改过]

[该贴被banq于2007-10-30 15:45修改过]

[该贴被admin于2007-11-16 21:25修改过]

oojdon
2007-10-31 13:11
拷贝并修改jpetstore和sample_jdbc的一些代码,快速实现了一个学生成绩管理系统,感谢banq,感谢jdonframework!!

猜你喜欢