简单就是美 -- 简化hibernate,简化dao

一、简化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;
    }

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

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值