论坛首页 入门技术论坛

Ibatis,hibernate--能者见能,智者见智慧(原创)

浏览 7878 次
该帖已经被评为新手帖
作者 正文
   发表时间:2009-04-18  
zozoh 写道


Trans 就是类似于 Sprint 的事务模板 //1.
Dao 抽象出来,为的是可能有其他的更好的实现  //2.
EntityService 类替你省了一个参数, dao.fetch(Class, long)  用 EntityService 写就是 service.fetch(long) // 3.
TreeService 提供了操作树形数据的能力
没有注释,和 JDoc ,呵呵

这个项目我写了 3-4 个月, 现在还在 alpha,我想知道设计上,具体哪些地方禁不住推敲,现在各个方面都是可以改的。 因为我怕自己的思路太狭隘,所以现在也想在论坛收集一些好建议,你可以给我一些建议和意见吗?比如,哪个类的哪个函数应该怎么改会好些,或者干脆某个类是脑子进水,根本不需要。 说不定我们能找到一些好主意 

Java 的范型是擦除, C++ 的膨胀,的确不一样,在 《Java Thinking》 里有专门说。 用惯了,觉得其实还可以,不是原来感觉的那么讨厌了,呵呵


1 我没听说过sprint。但是我觉得这种设计很违反OO原则。而且MS现在的功能弱一些?像select for update/delete这种支持么?
2 这个我反对。Dao作为入口类不应该提供所谓更好的实现。容易造成混乱。
而且对于Dao的逻辑部分。嗯,的确,小而多。所以我觉得应该考虑用adapter来实现。把那些小而多的东西实现分成小而少的adaptee。这样Dao纯adapt虽然多,但没有任何逻辑部分代码,更清晰一些
3 Service类没有提供抽象方法啊。还是没明白service抽象的目的啊。。。

我猜nutz中存在的这些费解的设计问题还有很多,   因为没有注释,所以我也没仔细往下看。。。
0 请登录后投票
   发表时间:2009-04-18  
zozoh兄有意思,弄出nutz来很有想法,我以后会常用的,支持!
0 请登录后投票
   发表时间:2009-04-19  
直接在代码里写SQL。
良好的代码结构比XML配置文件好维护的多。
0 请登录后投票
   发表时间:2009-04-19  
mikeandmore 写道

1 我没听说过sprint。但是我觉得这种设计很违反OO原则。而且MS现在的功能弱一些?像select for update/delete这种支持么?

Sorry 写错了,其实是 Spring。  OO 的概念太宽泛了把,Nutz 就是想让你用最少的代码作最多的事情。 你通过 fetch() 获取一个对象,然后可以直接使用 delete 或者 update 更新它。 MS 是什么? 微软?
mikeandmore 写道

2 这个我反对。Dao作为入口类不应该提供所谓更好的实现。容易造成混乱。
而且对于Dao的逻辑部分。嗯,的确,小而多。所以我觉得应该考虑用adapter来实现。把那些小而多的东西实现分成小而少的adaptee。这样Dao纯adapt虽然多,但没有任何逻辑部分代码,更清晰一些

问题是哥们,我现在弄不少了啊,现在 NutDao 这个类用指向的其他类我很难再合并了。我努力看看能不能压缩代码。
mikeandmore 写道

3 Service类没有提供抽象方法啊。还是没明白service抽象的目的啊。。。

就是让你调用 dao 接口的时候少传一个参数。 比如你用 dao 接口获取对象:
dao.fetch(Abc.class,23);

如果你用了EntityService,你就只需要这么写:
service.fetch(23);

因为 EntityService 知道你要传的第一个参数,为什么知道呢? 因为你构建 EntityService 的时候是这么写的:
IdEntityService<Abc> service = new IdEntityService<Abc>(){};

为什么叫 IdEntityService 呢?
因为你的 Entity 类使用了 @Id 来声明一个主键

在Nutz 里,还有 IdNameEntityService,顾名思义,就是你的 Entity 即声明了 @Id 又声明了 @Name,在你的数据表里,这两个字段一般有一个是主键,另外一个加了唯一性约束。

如果你的数据表只有一个字符串型主键,还有一个 NameEntityService 和你对应。总之,就是 com.zzh.service 那个包里的那几个类而已。

总之,EnityService 类以及其子类,设计用来替你省掉一个 Class<?> 参数,我想,每次代码都给你省一点,积少成多嘛。你要是懒得用 Servcie 也可以不用。我自己写代码的时候,觉得 Service 类挺方便的。我就是个懒人,代码能少敲一个字儿,我就会想尽办法少敲两个字儿。

mikeandmore 写道

我猜nutz中存在的这些费解的设计问题还有很多,   因为没有注释,所以我也没仔细往下看。。。

是啊,注释写起来太麻烦了,我慢慢加...  如果你感兴趣,咱们 MSN或者 GTalk 联系。 我随时恭候你的任何问题。  
0 请登录后投票
   发表时间:2009-04-19  
donglix 写道
zozoh兄有意思,弄出nutz来很有想法,我以后会常用的,支持!


恩,在使用的时候如果有问题,可以随时联系我。或者在 googlecode 上给我报 issue 
0 请登录后投票
   发表时间:2009-04-19  
呃。。我们MSN上说吧。。。
不过我倒是打算重新设计一个orm。。呵呵。。。
nutz的想法不错,但是设计上做了太多不必要的妥协。
0 请登录后投票
   发表时间:2009-04-19  
好啊,你加我吧,我白天应该都在线。下周因为我老板来,可能白天不时的要讨论设计,你先在 MSN 上给我留言,我看到了就回你
0 请登录后投票
   发表时间:2009-04-21  
我觉得LZ写的比较好,我用过ibatis,在性能方面和开发使用性方面,确实比Hibernate要好点点,当然Hibernate是当今很强大的数据持久层框架,最后是引用LZ的话,没有最好的,只有最适合的!
0 请登录后投票
   发表时间:2009-06-17  
ibatis 如果sql条件关系复杂的话,你试试,光sql维护,不搞死人才怪呢,xml里拼sql!!
0 请登录后投票
论坛首页 入门技术版

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