加入設計模式後事務遇到的迷惑,還請各位大哥解難
在做一個C/S的給老大們演示的例子(一個介面上操作兩個主從表,主從表的異動(新增、刪除、修改),都要放到同一個事務裡),使用了Business Delegate、Service Locator、Session Façade、Transfer Object、Data Access Object幾種設計模式,後臺資料庫是想用CMP做資料的異動(新增、刪除、修改),讀取資料由DAO或者透過JDBC、Hibernate之類的技術去實現。
DAO我是寫了一個介面,然後不同的表實現了不同的DAO介面,然後由Session Façade去呼叫不同的DAO實現,由於只有兩個表,我只寫了一個Session Façade,在Session Façade的ejbCreate裡注入了DAO的不同實現,由此根據不同的注入可以操作不同的表。
按我的理解,Session Façade應該要分出一定的層次,也就是說假設Session Façade裡面底層有方法Amethod、Bmethod、Cmethod,這三個方法是直接操作DAO,而Dmethod是呼叫了Amethod和Bmethod、Emethod呼叫了Bmethod和Cmethod,還有可能Fmethod是呼叫了Dmethod和Emethod,也就是一層一層的疊上去,我理解這樣可以提高程式碼的重用性。然後再由客戶端透過Business Delegate呼叫Session Façade裡面的方法。
現在問題來了:
1、在Session Façade和CMP直接加入的DAO是不是多餘的呢?(我的考慮是或許以後可以提供不同的實現,保證一定的靈活性)
2、由於我是在Session Façade裡的ejbCreate裡注入了所需要的DAO實現,也就是說我的Business Delegate在呼叫Session Façade的時候需要知道我所需要的具體的DAO的實現(至少是要知道實現類的名字),這樣是不是會跨層了,按理說Business Delegate只需要知道Session Façade,但是現在還要求他知道DAO的東西,是不是有點...... ,心理總感覺怪怪的。
3、由於要求主從表的異動都要在一個事務裡,而且我們不可能一次異動要多次和Session Façade互動,也就是說Session Façade裡需要一次幫我們搞定,這樣子似乎剛才的ejbCreate注入DAO的實現根本不能用了(因為有可能操作兩個DAO),而且Session Façade裡會因為剛才我們需要的一次到位的方法,在Session Façade出現越來越多的層次(這時候似乎Facade裡面的分層成了一個累贅)。
4、事務該在哪裡進行控制,DAO肯定是不可能,而Session Façade裡由於考慮了重用性和客戶端的需要分了很多的層次,裡面的各個層次都很可能在以後會被Business Delegate呼叫,所以在Session Façade進行事務控制似乎也不行??
我該怎麼做?請大家各抒己見,多多發表自己的觀點和意見!!
第一次在jdon發帖子,希望大家多多支援,謝謝!!!
DAO我是寫了一個介面,然後不同的表實現了不同的DAO介面,然後由Session Façade去呼叫不同的DAO實現,由於只有兩個表,我只寫了一個Session Façade,在Session Façade的ejbCreate裡注入了DAO的不同實現,由此根據不同的注入可以操作不同的表。
按我的理解,Session Façade應該要分出一定的層次,也就是說假設Session Façade裡面底層有方法Amethod、Bmethod、Cmethod,這三個方法是直接操作DAO,而Dmethod是呼叫了Amethod和Bmethod、Emethod呼叫了Bmethod和Cmethod,還有可能Fmethod是呼叫了Dmethod和Emethod,也就是一層一層的疊上去,我理解這樣可以提高程式碼的重用性。然後再由客戶端透過Business Delegate呼叫Session Façade裡面的方法。
現在問題來了:
1、在Session Façade和CMP直接加入的DAO是不是多餘的呢?(我的考慮是或許以後可以提供不同的實現,保證一定的靈活性)
2、由於我是在Session Façade裡的ejbCreate裡注入了所需要的DAO實現,也就是說我的Business Delegate在呼叫Session Façade的時候需要知道我所需要的具體的DAO的實現(至少是要知道實現類的名字),這樣是不是會跨層了,按理說Business Delegate只需要知道Session Façade,但是現在還要求他知道DAO的東西,是不是有點...... ,心理總感覺怪怪的。
3、由於要求主從表的異動都要在一個事務裡,而且我們不可能一次異動要多次和Session Façade互動,也就是說Session Façade裡需要一次幫我們搞定,這樣子似乎剛才的ejbCreate注入DAO的實現根本不能用了(因為有可能操作兩個DAO),而且Session Façade裡會因為剛才我們需要的一次到位的方法,在Session Façade出現越來越多的層次(這時候似乎Facade裡面的分層成了一個累贅)。
4、事務該在哪裡進行控制,DAO肯定是不可能,而Session Façade裡由於考慮了重用性和客戶端的需要分了很多的層次,裡面的各個層次都很可能在以後會被Business Delegate呼叫,所以在Session Façade進行事務控制似乎也不行??
我該怎麼做?請大家各抒己見,多多發表自己的觀點和意見!!
第一次在jdon發帖子,希望大家多多支援,謝謝!!!
相關文章
- 小弟請求各位師兄大哥一個面試遇到的問題面試
- 各位大哥,banq大哥請進,有關jdon版的安裝
- 關於用設計模式代替if else的迷惑設計模式
- 請教banq大哥,領域模型的設計模型
- 請教各位:CTI IVR領域該應用那些設計模式?VR設計模式
- 請教banq大哥:資料庫設計的問題!!!資料庫
- 請教banq老師和各位大哥,以下需求應該怎麼分析
- 請教板橋大哥及各位高手,這個case是否能用Jdon框架框架
- 向各位大哥請教:web專案的開發環境如何搭建?謝謝!!!Web開發環境
- 微服務解耦設計模式 - Neeraj微服務解耦設計模式
- 請教各位大哥,小弟是一名菜鳥,想對公司下面的專案採取如下的分層方式,各位大哥,看看我的想法對不對
- 各位大哥,幫忙解決一下這個問題
- 一點點技術難點請教各位道友
- 迷惑的地方!請高手指導
- 求助關於EJB的部署問題(小弟是初學者,請各位大哥看一下)
- python 詭異問題求助各位大哥Python
- 看完這篇原型設計模式,還不會,請你吃瓜原型設計模式
- 請各位幫幫忙――怎樣在Jbuilder x中加入sql的驅動UISQL
- 大家討論 你在學習設計模式的過程中,遇到困難是什麼??設計模式
- 今天加入,向各位學習!
- sqlserver遇到回滾事務的操作策略SQLServer
- Spring筆記(4) - Spring的程式設計式事務和宣告式事務詳解Spring筆記程式設計
- 請教benq大哥strategy模式在實際中的一個應用ENQ模式
- 架構設計 | 基於Seata中介軟體,微服務模式下事務管理架構微服務模式
- 服務設計的原則:服務模式與反模式模式
- 小弟想做個交友的網站,各位大哥給點意見,網站
- 還在為黑白網頁設計犯難?12款設計幫你輕鬆解決!!!網頁
- 使用設計模式後的副作用設計模式
- JDBC事務處理設計JDBC
- 《從設計到模式》——解讀設計模式設計模式
- Spring的事務管理入門:程式設計式事務管理(TransactionTemplate)Spring程式設計
- 分散式事務解決方案——柔性事務與服務模式分散式模式
- Spring事務(Transaction)管理高階篇一棧式解決開發中遇到的事務問題Spring
- 設計模式,你相信嗎,只用兩個函式實現事務!設計模式函式
- 微服務設計模式(下)微服務設計模式
- 微服務設計模式(上)微服務設計模式
- Laravel - 服務設計模式Laravel設計模式
- .NET應用架構設計—表模組模式與事務指令碼模式的程式碼編寫應用架構模式指令碼