日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java oo_我爱oo,我爱java

發布時間:2023/12/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java oo_我爱oo,我爱java 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2006年4月10日

#

原文

關于"貧血模型"的討論幾乎沒有停止過,在openfans.org的開發過程中,我們也討論了很久,我覺的有很多東西應該記下來:

明確一下意思先:

DAO:數據操作對象,會操作數據庫

持久層:能提供對象持久化服務的一系列組件或服務

領域對象:描述領域模型的對象,是通過業務分析進行系統建模的產物

血模型:就是domain

object只有屬性的getter/setter方法的純數據類,所有的業務邏輯完全由一個所謂的Manager來完成(又稱

TransactionScript),這種模型下的domain object被Martin Fowler稱之為“貧血的domain

object”

常見的類基本結構如下:

一個業務數據類叫做Item,

一個DAO接口類叫做ItemDao

一個DAO接口實現類叫做ItemDaoHibernateImpl

一個業務邏輯類叫做ItemManager(或者叫做ItemService).

觀察上面的幾個類很容易發現問題:

1:Item和ItemManager實際是操作與數據的關系,實際完成的就是經典OO中的一個對象的能力;

2:當有許多Item時 類組變得很龐大,產生很多 xxxDao xxxImpl xxxManager 其中包含大量重復代碼;

按<>的觀點,上述代碼存在以下臭味:

1:重復的代碼?? xxxDao xxxImpl xxxManager(通常)

2:霰彈式修改,一個變化影響多個類,類之間不夠高內聚 item變化-->Dao,Impl,Manager均要變動

3:依戀情結,兩個類之間互相作用過多 itemManager

4:平行繼承體系,當增加一個新類時總是要增加另一個類

5:夸夸其談未來性,在沒有任何暗示的情況下考慮擴展? Dao,實際HibernateImpl可能n年內是唯一的Dao實現

6:純稚的數據類,只有數據的類? item

我覺的 貧血模型 是系統分析設計方向性錯誤的產物:

1:沒有進行領域建模---以數據表結構為中心,而不是業務模型為中心的思考方式,使設計人員選擇Item為考慮問題的出發點

2:將DAO與持久層混淆---我們需要的一種持久化服務,DAO緊緊是提供數據操作能力而已,Hibernate是一種高級的服務(他已經包含了DAO,而不是相反),已經完成了所有的持久層服務.

3:過于強調低偶合---將一些本來一些提供單一職責的內容分散在多個單元中使 客戶端 依賴更多的接口,而忘記了高內聚原則.

4:Spring的能力限制---由于Spring現階段不支持對于領域模型的服務注入,使設計人員將操作和數據分開,并將領域變為DataOnly的.

(Spring2.0將在很大程度上解決這個問題)

我認為良好的解決方案:

首先領域建模,建立領域模型-->合并前面所說的Item和ItemManager成為 domainItem;對于數據庫服務,

1:如果考慮領域層包含數據操作能力,則建立DAO并選擇其它好的DAO方案比如IBATIS或Hibernate之類的組件;

2:如果考慮將數據庫(或其他存儲界質)存儲考慮在領域之外成為持久層,

a:則或者對持久層框架同時建模,同時選擇合適的組件為持久層服務提供存儲服務(包括DAO--亦可選擇IBATIS/Hibernate組件),

b:或者直接使用Hibernate/JDO等框架實現持久化服務,領域層直接使用持久層服務,對領域對象進行持久化和反持久化(從持久層獲取以持久化的對象).

其他:

實際上,作為一種解決方案,所謂"貧血模型"的具體使用,并不會有太大的問題,尤其是使用一些代碼生成工具或已經做好相應的基本框架時,很多軟件的核心價

值都在于對客戶提供的服務,而其內部則成為黑盒,我們只要合理的解決業務問題,就是"王道"了,對于代碼的臭味,可以慢慢重構--這也需要成本呀.

再其他:

有人說,我們的業務就是CRUD,領域模型只有數據類就足夠了.我覺的這是搞錯了方向------只有CRUD時,只有處理CRUD的那些類才有必要進行建模(他們才是領域模型),而所謂的User\Item等數據類則完全沒有必要進行建模,更不要談領域了.

貧血之外:

實際上,軟件\OO方法的外延大的很,更多問題與數據庫存儲無關(但也有貧血問題),所以建模才是根本,OO方法的原則才是我們必須掌握的.

2006年2月5日

#

2006年1月23日

#

2006年1月21日

#

1:abator下載:http://ibatis.apache.org/abator.html

2:將abator安裝到eclipse中

3:此時可以新建一種文件類型:Abator for iBATIS Configuration File,建立一個

4:在 jdbcConnection 中設置要mapping的數據庫的jdbc連接

classPathEntry 是你的jdbc driver類路徑

5:javaModelGenerator,sqlMapGenerator,daoGenerator

分別設置 java dataObject、sql mapping文件和 DAO 接口、實現類的生成位置:targetPackage

目標包,targetProject:eclipse項目

6:daoGenerator 中可以設置屬性  type: ibatis 或 spring 指定生成的dao實現類是使用com.ibatis.dao.client.template.SqlMapDaoTemplate

還是

org.springframework.orm.ibatis.support.SqlMapClientDaoSupport

7: table 中 tableName 指定要處理的表名

可以有多個table

8:table中可以包含子元素 generatedKey: 使Insert方法可以返回值--由指定的column mapping

9:generatedKey中的sqlStatement屬性可以是獲取sequence的SQL,也可以是獲取自增值的SQL

比如:Oracle的 select theSequence.nextVal from dual

SQLServer的 SELECT @@IDENTITY as? column_name

10:保存文件,選中文件,右鍵菜單選擇Generate iBATIS Artifacts! ok...使用abtor生成的iBatis代碼出現xml解析錯誤的解決方案如果按上述方式生成的代碼有xml解析錯誤:? 請下載這個

注意,該文件名為Abator.rar.txt實際是一個rar文件,只是上傳服務器有文件類型限制 所以只好加了擴展名txt。

請去掉.txt后解壓。

使用

org.apache.ibatis.abator.core_0.5.1.jar

替換調你的 eclipse\plugins 的同名文件 即可。

然后重新生成代碼。 OK 應該可以咯....

我改了一點代碼,需要可以留言。

2006年1月20日

#

2006年1月19日

#

總結

以上是生活随笔為你收集整理的java oo_我爱oo,我爱java的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 2021av| 91精品国产一区二区在线观看 | 999久久久精品视频 亚洲视频精品在线 | 欧美无砖砖区免费 | 免费看三级黄色片 | 一极毛片 | 亚洲人成777| 女儿的朋友4在线观看 | 少妇激情视频 | 日韩精品一区二区三区中文字幕 | 久久性生活片 | 欧美一区二区成人 | 九热在线 | 琪琪色网 | 开心激情五月网 | 亚洲国产精品99 | 男女被到爽流尿 | 草草在线观看 | 富二代成人短视频 | 日本精品视频一区二区三区 | 97蜜桃网 | 午夜精品区 | 成年人激情视频 | 欧美黄色激情 | 狠狠干导航 | 福利视频免费看 | 欧洲三级在线 | 色网在线免费观看 | 久久午夜免费视频 | 福利所第一导航 | 北条麻妃99精品青青久久 | 美女网站免费观看视频 | 久久国产精品99久久人人澡 | juliaann精品艳妇hd | 青草青草视频 | 精品国产午夜 | 得得的爱在线视频 | 黄色性生活一级片 | 亚洲精品久久久久久国产精华液 | 自拍偷拍一区二区三区 | 欧美一级在线视频 | 免费日韩一级片 | 中文字幕在线观看欧美 | 色哟哟免费| 国产色站 | 亚洲精品人妻av | 超薄肉色丝袜一二三 | 精品香蕉一区二区三区 | 亚洲人成亚洲人成在线观看 | 祥仔视觉av | 国产精品无码久久久久一区二区 | 国产在线极品 | 女人18毛片毛片毛片毛片区二 | 亚洲国产日韩a在线播放性色 | 制服.丝袜.亚洲.中文.综合懂 | 人人艹在线 | 欧美.com | 色妞在线| 老司机在线免费视频 | 黑人巨大精品欧美一区免费视频 | 最新不卡av| 亚洲国产aⅴ精品一区二区 日韩黄色在线视频 | 日本韩国视频 | 91黄色大片| 懂色av一区二区三区免费 | 欧美女优视频 | 精品视频在线一区二区 | 精品理论片 | 国产成人精品免高潮费视频 | 久久久久久香蕉 | 成人综合婷婷国产精品久久 | www.一区二区三区四区 | 牛av| 国产丰满美女做爰 | 成人黄色片免费看 | 超碰黑丝 | 日本不卡在线观看 | 极品探花在线观看 | 一区二区在线免费观看视频 | 日日日日干 | 九一网站在线观看 | 久久伊人99 | 免费看美女隐私网站 | 小罗莉极品一线天在线 | 毛片网站在线播放 | 欧美在线视频第一页 | 极品另类| 成人av免费观看 | 欧美性生交xxxxxdddd | 国产精品久久久久久久天堂 | 亚洲久久天堂 | 中国女人一级一次看片 | 国产精品国产精品国产专区蜜臀ah | 91www在线观看| 欧美做受xxxxxⅹ性视频 | 人妻丰满熟妇av无码久久洗澡 | 亚洲a网站 | 久久综合伊人77777蜜臀 | 亚洲天堂网在线观看视频 |