當前位置:編程學習大全網 - 編程語言 - java中dao層和service層的區別,為什麽要用service

java中dao層和service層的區別,為什麽要用service

樓主您好

service是業務層,dao是數據訪問層。

呵呵,這個問題我曾經也有過,記得以前剛學編程的時候,都是在service裏直接調用dao,service裏面就new壹個dao類對象,調用,其他有意義的事沒做,也不明白有這個有什麽用,參加工作久了以後就會知道,業務才是工作中的重中之重。

我們都知道,標準主流現在的編程方式都是采用MVC綜合設計模式,MVC本身不屬於設計模式的壹種,它描述的是壹種結構,最終目的達到解耦,解耦說的意思是妳更改某壹層代碼,不會影響我其他層代碼,如果妳會像spring這樣的框架,妳會了解面向接口編程,表示層調用控制層,控制層調用業務層,業務層調用數據訪問層。

初期也許都是new對象去調用下壹層,比如妳在業務層new壹個DAO類的對象,調用DAO類方法訪問數據庫,這樣寫是不對的,因為在業務層中是不應該含有具體對象,最多只能有引用,如果有具體對象存在,就耦合了。

當那個對象不存在,我還要修改業務的代碼,這不符合邏輯。好比主板上內存壞了,我換內存,沒必要連主板壹起換。我不用知道內存是哪家生產,不用知道多大容量,只要是內存都可以插上這個接口使用。這就是MVC的意義。

接下來說妳感覺service的意義,其實因為妳現在做東西分層次不是那麽嚴格,在壹個妳們做東西業務本身也少,舉個最簡單的例子,妳做壹個分頁的功能,數據1000條,妳20條在壹個頁,妳可以把這個功能寫成工具類封裝起來,然後在業務層裏調用這個封裝的方法,這才是業務裏真正幹得事,只要沒訪問數據庫的,都要在業務裏寫。

再有不明白的追問,這是經驗問題,呵呵,其實以後妳就會懂。只是剛開始寫的代碼都是有個請求,我就去數據庫取,業務幾乎沒有。

比說妳現在用的是SSH框架,做壹個用戶模塊:

1、假設現在妳做這個功能會用到user表和權限表,那麽妳前臺的頁面訪問action,action再去調用用戶模塊service,用戶模塊service判斷妳是操作user表還是權限表,如果妳操作的是user表則service的實現類就去調用userDAO。如果是操作的是權限表則調用權限的DAO

2、也就是說DAO壹定是和數據庫的每張表壹壹對應,而service則不是。明白的沒?其實妳壹個項目壹個service和壹個DAO其實也壹樣可以操作數據庫,只不過那要是表非常多,出問題了,那找起來多麻煩,而且太亂了

3、好處就是妳的整個項目非常系統化,和數據庫的表能壹致,而且功能模塊化,這樣以後維護或者改錯比較容易,性能也高壹些

  • 上一篇:那些特別有趣創意滿滿的諧音梗收藏(56句)
  • 下一篇:請問畢業設計的開題報告和設計說明書該怎麽寫
  • copyright 2024編程學習大全網