JAVA & FLEX

一个分享java和flex开发经验的空间

   :: 首页 ::  :: 联系 ::  :: 管理 ::
  26 随笔 :: 2 文章 :: 44 评论 :: 0 Trackbacks

    早有就这个想法,将自己在项目中用到的ibaits经验写出来,恰巧看到了这个标题,所以重新开了一个帖子,欢迎大家讨论一下。
    ibatis是一个轻量级的框架,他的优点在于Sql的自由化,这点我个人认为比hibernate好了很多,它比较灵活。但是问题来了,由于比较灵活,那么我们会面临一个问题,我们如何来操控它才是最优的。也许这个问题本身就是一个没有答案的问题,仁者见仁,智者见智,下面我只把自己的想法写下来,希望能帮助到希望得到帮助的人。
    对于web的三层结构,我们数据的传递流是这个样子的,Controller->service->dao->sqlmap->DB。那么我们该如何设计这个Bean呢,我认为这样是最佳的组合。Control(Form)->service(Dto)->dao.这样的好处在于,我们解耦了页面和数据库的对应关系。
    对于ibatis来说,单纯的增删改查,好像一般都是form和dto这两个bean没有什么区别,所以有些人可能会认为在control层和service层多出的form没有什么用处,但是业务复杂以后,你就会知道页面和数据库的解耦,是多么的重要。ok,今天的话题并不是讨论三层的bean设计,而是针对dto的设计。

    “iBATIS那一大堆的不伦不类的JavaBean“的作者可能还是一个在校的学生吧,这种看法,对于一个学生来讲,已经是很不错的。但是项目经验告诉我们,Dto的设计,并没有那么单纯,并不是一个简单的javaBean的问题,它涉及到了与数据库方面相关的内容。例如,一个新增操作,它设计到三个表的插入,这个dto你怎么设计呢,并且这个插入的动作并不是全表的插入操作,我们该怎么办。是针对所有需要插入的项,设计dto还是涉及到类似hibernate那样的orm映射,还是利用继承来设计呢?
    事实上,java的开发原则告诉我们,要将你实现的功能尽量拆分成元来进行,所谓的元,就是尽量的原子话,ok,遵循这个原则,我们需要将dto设计成orm的映射,即一个表对应一个dto。那么插入三个表,那就涉及到了三个表的dto数据来源问题,难道是我们需要将form中的每个字段都分别set到dto中吗,有重复的话,我们不是白做了很多的工作?好的,我们用sqlmap中的语句来解决它就可以了。
所以,ibatis中的bean设计,绝对不是不伦不类的javabean,而是要符合你本身框架和数据库设计的综合bean的设计。
以上只是个人看法,希望大家指正。

posted on 2009-06-29 10:33 程序人生-天津 阅读(949) 评论(0)  编辑  收藏 所属分类: JPA

只有注册用户登录后才能发表评论。


网站导航: