中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javaweb業務層應該如何寫

發布時間:2020-09-17 14:01:48 來源:億速云 閱讀:186 作者:小新 欄目:編程語言

這篇文章主要介紹了javaweb業務層應該如何寫,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

 業務層

Service層:引用對應的Dao數據庫操作,在這里可以編寫自己需要的代碼(比如簡單的判斷)。

service層是調用各種dao的業務操作,比如你有一個業務是添加,然后修改。 那么你分別調用dao的添加和修改操作,包括里面的一些數據轉換,邏輯判斷都放到service層,dao只是單純的增刪改查。 而且事務一般會放到service層。
其中Service層和DAO層由于可能都會對數據庫進行操作,其具體區別為:

dao和service對應

一般情況下,Hibernate DAO只操作一個POJO對象,因此一個DAO對應一個POJO對象。 Service層是為了處理包含多個POJO對象(即對多個表的數據操作)時,進行事務管理(聲明式事務管理)。Service層(其接口的實現類)被注入多個DAO對象,以完成其數據操作。

Service之有無
這一點我的看法未必正確,我的腦海現在有兩種構建業務層的模式:
模式1是Service + DAO,即DAO中只做CRUD及類似的簡單操作(稱之為功能點,不包含業務邏輯),Service中通過調用一個或多個DAO中的功能點來組合成為業務邏輯.Service的數量應該由功能模塊來決定。
在這種模型中業務邏輯是放在Service中的,事務的邊界也應該在Service中控制. 當然,直接在Service中控制事務會引入非業務邏輯的代碼,幸好Spring的AOP可以解決這個問題,這也是引入Spring的原因之一.
如果說到缺點,就在于對某些對象的操作就是簡單的CRUD,Service層顯得累贅.

模式2是Service + BO, 而BO = DAO + 業務方法, 在原先DAO的基礎上添加業務方法,形成BO對象。需要注意的是BO中的業務方法往往是針對一個實體對象的,如果需要跨越多個實體對象,則方法應該放在Service中。

舉例來說,

一個簡單的銀行帳戶管理系統,創建帳戶這個BO對象,里面可以有修改密碼,取錢等業務方法(不難看出,這些方法都只對單個帳戶對象進行操作)。現在需要添加一個轉賬方法,就應該放在Service中。

這里Service和BO的關系是什么樣的呢?再舉一例:

以國家行政機關為例:糧食局負責收糧,賣種子等,建設部負責審批土地買賣,建設公路等,這都是行政部分份內的事兒。突然某地發了水災,救災時需要糧食局開倉放糧,建設部修建臨時房屋,如何協調兩個部門?就需要成立專門的救災委員會,由救災委員會出面對兩個部分的資源進行調撥。這里兩個部分就是BO,而救災委員會就是Service。不知我的意思是否表達準確了,呵呵。 模式1的在劃分Service和DAO時界限清晰,但會帶來一些無必要的代碼。 模式2的劃分相對復雜,然而可以提高編碼效率。

當然小規模的應用中,沒有Service,完全是DAO或BO也是可以接受的。

Service和DAO的接口之有無

接口是一種契約,它可以有多種實現。所以接口之有無取決于具體實現是否需要多樣化。如果鐵定一種DAO或一種Service只有一種實現,那么抽象出接口的意義不大。然而一些大型應用或許需要DAO和Service的多種實現(比如上面例子中的帳戶DAO,可能需要一種Hibernate實現、一種CMP實現和一種JDO實現),為了向上一層隱藏具體實現類,需要采用接口。

隱藏具體實現類的創建過程,這有兩種方法:一是實用工廠方法,代價是代碼量大(每個DAO和Service一個工廠)。二是使用Spring的IoC,實現依賴注入,不需要寫額外的代碼,這也是引入Spring的理由之二。

感謝你能夠認真閱讀完這篇文章,希望小編分享javaweb業務層應該如何寫內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华蓥市| 宁武县| 曲阜市| 康平县| 贵定县| 安仁县| 扬中市| 门头沟区| 师宗县| 治县。| 阜城县| 呈贡县| 抚远县| 塔城市| 海林市| 保靖县| 彭山县| 紫云| 交城县| 利川市| 阳东县| 合山市| 凤山县| 巴塘县| 墨脱县| 静宁县| 新龙县| 洞口县| 海安县| 义乌市| 博乐市| 晋宁县| 绩溪县| 聂荣县| 龙口市| 游戏| 西昌市| 万荣县| 鄢陵县| 广西| 汶上县|