程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 簡化hibernate,簡化dao

簡化hibernate,簡化dao

編輯:關於JAVA

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

願意聽聽各位在項目中的做法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved