關於領域驅動設計與開發過程中的一些疑惑請道友幫忙解惑,謝謝。
大家好,對於領域驅動設計開發來說我是一個新人,目前我在專案中強制自己實施領域驅動設計開發,為的是讓自己能快速理解領域驅動設計並在開發中運用自如,但實際結果是處處都是問題,手裡有兩本書,但看了之後感覺問題更多,下面我問幾個我目前最關心的問題,希望在此路上已有成就的道友能幫我一把。
1.領域驅動設計裡的所說的Repository的概念是我們以前用的DAO概念嗎?目前我在使用Spring的JPA來進行開發,裡面有一個JPARepository的概念, 但我的理解JPARepository的概念就是以前所熟悉的DAO模式,但是就是不知道是否是領域驅動設計裡所說的Repository的概念了。
2.聚合物件(或者聚合根物件,我也不知道這兩個是不是一個東西)大概是一個什麼樣的物件,書裡基本上都是講概念而沒什麼例子,如果一個物件裡有另一個物件的集合,而對另一個物件集合中新增刪改都透過當前物件來操作,那麼當前物件就是聚合根嗎?
3.Model與Entity可以是一個東西嗎?Model一般指的是領域模型物件,Entity一般指資料庫中的實體物件,但就我以前的開發經驗來看Entity肯定是貧血模型,而領域驅動中設計的Model物件肯定一本都不是貧血模型,另外書中有說Model是透過Repository取得,如果Model和Entity是一回事,那麼Repository豈不是和DAO是一回事了嗎?之所以提出這個問題在於,我現在應用的模型是Model為充血模型,而Model是從JPARepository中取得的,但JPARepository在基礎架構層,而Model在領域層,這樣層間的引用關係豈不是反過來了嗎?雖然書上有說依賴倒置原則,但那是對介面而言,對於我這種情況肯定不是依賴倒置的問題啊。
4.在一本書裡看到對於Repository的描述,其中一種是類似Hibernate那種,對於Hibernate我沒用過太多,對它的理解也不是很透徹,但透過書中的描述我理解是透過Repository取出的Model後,其Model物件本身就能直接運算元據庫,也就是對物件的任何修改都能直接更新資料庫,不需要顯示的再次呼叫Repository的save方法,與之對應的另一種模式就是顯示呼叫Repository的save方法才能將Model的改動持久化到資料庫中,那麼無論採用那種模式,從這段描述中我覺得領域驅動中的Repository越來越像DAO了,如果我的理解不對,請道友指正。
5.最後一個問題是與我目前的專案相關的,根據六邊形法則,介面層應該放置不同型別使用者訪問的介面,我的專案有兩個介面,一個HTTP介面,提供Restful API給移動裝置使用,另一個是Socket介面,提供字元流給一些微控制器裝置使用。Socket介面使用Netty元件來實現,Netty元件裡已經封裝了很多Socket的東西,但業務相關的東西還是需要自己來實現,但哪些是我需要放在基礎架構層的,哪些是需要放在介面層的呢?我以前的做法是將關於Socket介面的全部程式碼都放在基礎架構層,但看了六邊形法則後我覺得Socket也是一種介面,只不過面向的不是移動裝置而是微控制器裝置而已,那麼問題是將哪一部分拿到介面層呢,目前我是將自己的業務實現寫在繼承ChannelDuplexHandler的類中,那麼我感覺應該把關於業務實現的類拿到介面層中,不知道我想的對不對,請道友幫忙解惑。
以上是我在應用領域驅動設計與開發過程中遇到的問題,希望道友不吝賜教,謝謝。
1.領域驅動設計裡的所說的Repository的概念是我們以前用的DAO概念嗎?目前我在使用Spring的JPA來進行開發,裡面有一個JPARepository的概念, 但我的理解JPARepository的概念就是以前所熟悉的DAO模式,但是就是不知道是否是領域驅動設計裡所說的Repository的概念了。
2.聚合物件(或者聚合根物件,我也不知道這兩個是不是一個東西)大概是一個什麼樣的物件,書裡基本上都是講概念而沒什麼例子,如果一個物件裡有另一個物件的集合,而對另一個物件集合中新增刪改都透過當前物件來操作,那麼當前物件就是聚合根嗎?
3.Model與Entity可以是一個東西嗎?Model一般指的是領域模型物件,Entity一般指資料庫中的實體物件,但就我以前的開發經驗來看Entity肯定是貧血模型,而領域驅動中設計的Model物件肯定一本都不是貧血模型,另外書中有說Model是透過Repository取得,如果Model和Entity是一回事,那麼Repository豈不是和DAO是一回事了嗎?之所以提出這個問題在於,我現在應用的模型是Model為充血模型,而Model是從JPARepository中取得的,但JPARepository在基礎架構層,而Model在領域層,這樣層間的引用關係豈不是反過來了嗎?雖然書上有說依賴倒置原則,但那是對介面而言,對於我這種情況肯定不是依賴倒置的問題啊。
4.在一本書裡看到對於Repository的描述,其中一種是類似Hibernate那種,對於Hibernate我沒用過太多,對它的理解也不是很透徹,但透過書中的描述我理解是透過Repository取出的Model後,其Model物件本身就能直接運算元據庫,也就是對物件的任何修改都能直接更新資料庫,不需要顯示的再次呼叫Repository的save方法,與之對應的另一種模式就是顯示呼叫Repository的save方法才能將Model的改動持久化到資料庫中,那麼無論採用那種模式,從這段描述中我覺得領域驅動中的Repository越來越像DAO了,如果我的理解不對,請道友指正。
5.最後一個問題是與我目前的專案相關的,根據六邊形法則,介面層應該放置不同型別使用者訪問的介面,我的專案有兩個介面,一個HTTP介面,提供Restful API給移動裝置使用,另一個是Socket介面,提供字元流給一些微控制器裝置使用。Socket介面使用Netty元件來實現,Netty元件裡已經封裝了很多Socket的東西,但業務相關的東西還是需要自己來實現,但哪些是我需要放在基礎架構層的,哪些是需要放在介面層的呢?我以前的做法是將關於Socket介面的全部程式碼都放在基礎架構層,但看了六邊形法則後我覺得Socket也是一種介面,只不過面向的不是移動裝置而是微控制器裝置而已,那麼問題是將哪一部分拿到介面層呢,目前我是將自己的業務實現寫在繼承ChannelDuplexHandler的類中,那麼我感覺應該把關於業務實現的類拿到介面層中,不知道我想的對不對,請道友幫忙解惑。
以上是我在應用領域驅動設計與開發過程中遇到的問題,希望道友不吝賜教,謝謝。
相關文章
- 請大家幫忙,關於儲存過程分頁的問題...謝謝儲存過程
- 請教關於jive原始碼,請各位高手幫忙 ,謝謝!!!原始碼
- benq大哥,幫忙,請進入,謝謝!ENQ
- jive配置中的database問題?!請幫忙阿謝謝!Database
- 關於資料庫的問題。請幫忙看下,在下先謝謝了資料庫
- Jdon版jive安裝過程中,mysql資料庫連線出錯!(請幫幫忙,謝謝!)MySql資料庫
- 有關javaAPI,請各位高手幫忙,拜謝JavaAPI
- 請求幫助!謝謝!
- 幫忙看看如何設定,跪謝!
- 請教板橋老師關於領域驅動開發設計問題
- 領域驅動設計與敏捷開發敏捷
- 謝謝斑竹能否幫個忙!! (改個小程式)
- 一個關於mysql方面的問題,希望斑竹和大家能幫忙,謝謝!!MySql
- 領域驅動設計與模型驅動設計的關係模型
- 前端開發-領域驅動設計前端
- 請幫我看看呼叫webservice的問題謝謝!Web
- 關於J2EE專案中存在的問題,請各位給與解惑,先謝了!
- 請教彭老師關於jdbc的問題,謝謝!JDBC
- 關於 Appium 中 ios 自動化測試的幾個問題,請教下大神,謝謝APPiOS
- JavaScript中的領域驅動設計JavaScript
- 領域驅動設計中的模型模型
- 領域驅動設計,中臺與微服務微服務
- 關於SimpleJdonFrameworkTest的問題,謝謝!Framework
- 行為驅動開發(BDD)如何與領域驅動設計(DDD)結合?
- jms的問題,請高手幫忙解決一下,先謝了
- 關於java領域建模疑惑Java
- 關於領域驅動設計,大家都理解錯了
- 請問哪裡有關於java播放Flash的例子啊?謝謝了Java
- 關於領域驅動設計的函式程式設計思考 - Naveen Negi函式程式設計
- 關於petstore的執行問題,謝謝~
- Vsftpd匿名無法上傳,配置如下,幫忙找下原因,謝謝~!(轉)FTP
- 牛津大學“領域驅動設計”課程
- DDD領域驅動設計:領域事件事件
- 關於servlet多執行緒序的疑問,請各位仁兄作答,謝謝。Servlet執行緒
- 基於騰訊 x5 的引擎開發的混合 app,appim 切換 webview 時報錯。哪位大佬幫忙看看,有償解決。謝謝~APPWebView
- 領域驅動和MVVM應用於UWP開發的一些思考MVVM
- 高手幫忙解決兩道JAVA題,跪謝!!Java
- 領域驅動設計整合與架構架構