使用SSH如何構建架構層次

2021-08-30 09:58:24 字數 1755 閱讀 1372

在搭建系統的架構時我們採用了ssh+ajax 等方式構建的。我們一直說要層次分明,思路清晰,可現在都比較糟糕。

比如:jsp頁面用來顯示資料的,css用來美化頁面,js用來控制頁面的。現在很多頁面中什麼都有了,臭味很多。

在後台我們也分了action,service,dao層,原本action用來控制排程的,service用來處理相關的業務邏輯的,dao中用來crud資料的。可現在出現了action包裹著一部分邏輯,service就非常簡單了,就是用來呼叫dao中的方法,而dao中的方法即包裹了業務處理邏輯又包裹了crud資料處理。而且有的業務邏輯非常的複雜,涉及到的表操作很多,比如:

//結合spring支援hibernate session session = getsession(); //可以能會處理的一些東西 //1)通過hibernate方法select資料 //2)通過hibernate方法update資料 //3)通過hibernate方法delete資料 //4)通過hibernate方法insert資料 //通過session獲取connection,使用jdbc進行資料處理 connection con = session.getconnection(); //因為有一些邏輯很負責乙個select語句涉及的表太多,所以用jdbc來處理。 string sql = "select a ,b ,c ,d from a ,b,c,d where a = ? and b=?"; //反正類似的操作吧,就是關連來多。

類似上面的方式,很多數人在大多數的時候都是這麼弄的。我覺得這樣做就把業務邏輯和資料處理混淆了,方法太臃腫了,有著濃濃的臭味,不便於維護。xp中提倡面向介面程式設計、分層、短小的方法。它這麼乙個長長的方法占用乙個連線的時間太長(也就是整個事務的時間延長了),那麼當其他的使用者對相關的表進行請求時,就會出於等待的狀態,資源的競爭,如果長時間是這樣死鎖就出現了。:(

一般會把他們分布在不同的方法中。

//對應表的相關操作 public inte***ce dao public class service public void logice() }

這樣我的每乙個dao中的方法就會用到不同的session(不同的connection),是這樣的嗎?但是我是通過spring對service層進行事務處理的呀,那是不是說明兩種方式都會要占用同樣的事務處理資源?

看到那些貧血的service我就鬱悶,現在我有檢查**是否存在問題我也迷茫,這事情做的太少了。很多時候我們只顧一直往前跑,沒有時間回頭看。其實,我們要經常的code view,使用tdd開發模式,用xp的小步發布,這樣不要讓**的味道變的太壞,也對自己寫的**充滿信心,和使用者交流底氣十足。開發出來的系統,使用者滿意,市場**看漲。:)

現在我明白了整 個業務方法呼叫過程中都是使用同乙個session(connection)。至於業務邏輯怎樣來平衡分布,是不是可以把一部分放到action,一部分放到service,dao只負責和資料庫處理。對唯讀的事務我對其只用readonly。

比如:我上面的例子是不是可以變成如下的樣子呢?

//對應表的相關操作 public inte***ce dao public class service //該方法上加事務,傳播途徑為required,readonly public string get###(string s) //該方法上加事務,傳播途徑為required,readonly public list find###(string...) public void logice() } /** *那麼action中是不是可以變成如下的樣子呢? * */ public class action }

我們希望能夠更快的結束事務,避免不必要的阻塞,保證系統有更好的效能。

使用SSH如何構建架構層次

在搭建系統的架構時我們採用了ssh ajax 等方式構建的。我們一直說要層次分明,思路清晰,可現在都比較糟糕。比如 jsp頁面用來顯示資料的,css用來美化頁面,js用來控制頁面的。現在很多頁面中什麼都有了,臭味很多。在後台我們也分了action,service,dao層,原本action用來控制排...

SSH如何使用

secure shell ssh 是由 ietf the internet engineering task force 制定的建立在應用層基礎上的安全網路協議。它是專為遠端登入會話 甚至可以用windows遠端登入linux伺服器進行檔案互傳 和其他網路服務提供安全性的協議,可有效彌補網路中的漏洞...

使用Vue腳手架構建專案

使用vue腳手架構建vue專案npm install g cnpm registry https 如果不行的小夥伴也沒關係,下面可以選擇npm安裝的方式。安裝webpack cnpm install g webpackcnpm install g webpack cli安裝 vue cnpm ins...