亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

DAO和存儲庫模式之間有什么區別?

DAO和存儲庫模式之間有什么區別?

數據訪問對象(DAO)和存儲庫模式之間有什么區別?我正在使用Enterprise Java Beans(EJB3),Hibernate ORM作為基礎結構以及域驅動設計(DDD)和測試驅動開發(TDD)作為設計技術來開發應用程序。
查看完整描述

3 回答

?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

好的,我認為我可以更好地解釋我在評論中提出的內容:)。因此,盡管DAO比存儲庫更靈活,但基本上可以將兩者視為相同。如果要同時使用兩者,則可以在DAO-s中使用存儲庫。我將在下面解釋它們中的每一個:


儲存庫:

它是特定類型對象的存儲庫-它允許您搜索特定類型的對象并將其存儲。通常,它只會處理一種類型的對象。例如AppleRepository,您可以選擇AppleRepository.findAll(criteria)或AppleRepository.save(juicyApple)。請注意,存儲庫使用的是域模型術語(不是數據庫術語-與數據在任何地方的持久性無關)。


存儲庫很可能會將所有數據存儲在同一張表中,而模式則不需要這樣做。盡管它僅處理一種類型的數據,但使它在邏輯上連接到一個主表(如果用于數據庫持久性)。


DAO-數據訪問對象(換句話說-用于訪問數據的對象)

DAO是為您定位數據的類(主要是查找程序,但通常也用于存儲數據)。該模式不限制您存儲相同類型的數據,因此您可以輕松地擁有一個DAO,用于定位/存儲相關對象。


例如,您可以輕松地使用UserDao公開諸如


Collection<Permission> findPermissionsForUser(String userId)

User findUser(String userId)

Collection<User> findUsersForPermission(Permission permission)

所有這些都與用戶(和安全性)相關,并且可以在同一DAO下指定。對于存儲庫,情況并非如此。


最后

請注意,這兩種模式實際上含義相同(它們存儲數據并抽象化對數據的訪問,并且都表示為更接近域模型,并且幾乎不包含任何數據庫引用),但是它們的使用方式可能略有不同,因為DAO稍微靈活/泛型,而存儲庫則更具體和僅對類型進行限制。


查看完整回答
反對 回復 2019-12-07
  • 3 回答
  • 0 關注
  • 806 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號