快速业务通道

简化hibernate,简化dao - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

简化hibernate,简化dao

时间:2011-02-22

一、简化hibernate

首先hibernate是一个优秀的ORM工具(此话鉴定为废话,其次,按照20/80的规律,有80%的问题不需要那20%学习起来比较麻烦的东西。

很多人在用hibernate的时候一定把关系作为精华来学习,比如一对多,多对一,以及多对多,认为只有熟练运用这个才是对hibernate的真正掌握。

说实话,这个想法从技术的角度讲有点道理,问题是很多人对这些始终是一头雾水,反正不要好看,我现在仍然是一头雾水,今天我终于给自己解放了出来,我回头去看自己的项目,发现N多的时候100%的不要关系(在 hibernate中)也不会出人命,而且效果很好。

现在,每个mapping文件中没有了set,list,map,我相信一定有N多人说我这个不符合OO什么的,不过大家反过来想,在我的项目组中会有一个明显的好处就是我将问题简化了,

大家都会做,比如Org与User的关系,1:N的关系,我不用考虑这个,直接手工去维护,dao.save(org);user.setOrgId("11");dao.save(user);

有一段时间我依次问各个项目组,你们的hibernate中用到了关联操作了么,回答清一色的“NO”,看来大家都在无意识的回避这个陷阱,呵呵,很合吾意。

二、简化dao

可能是受到appfuse的影响,一个service就有一个dao,现在从实际的角度来看仍然觉得没有太大的必要,当然,如果你是类似测试驱动的想法那么可能另当别论。现在我更喜欢一个通用的dao全部搞定,确实舒服。

service中的操作全部调用通用dao(getObjects(),saveObject(),updateObject(),removeObject())

public BeanValue saveItem(RequestMap rMap) {     BeanValue value = null;     try {       log.info("=====begin to save alexItem object");       value = new BeanValue();       AlexItem alexItem = (AlexItem) BeanUtil.convertObject(AlexItem.class, rMap.getMap());       dao.saveObject(alexItem);       log.info("=====end to save alexItem object");       value.addRequestMap("admin",alexItem);       value.setForword("success");     } catch (BaseException e) {       value.addErrorMap("errorName",e);       value.setForword("error");     }     return value;   }

愿意听听各位在项目中的做法。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号