【Spring】JavaBean、MVC軟件設(shè)計(jì)模式與Java中Dao、Service、Controll三層體系

文章目錄

一、JavaBean

JavaBean實(shí)際就是一個(gè)普通的Java類,為了規(guī)范開發(fā),要求JavaBean具有如下規(guī)范:

① 具有一個(gè)公共的、無參的構(gòu)造方法;

② 類的屬性私有,且必須提供公共的setter和getter方法用于外部對(duì)屬性賦值和獲取屬性值;

簡而言之:JavaBean = 屬性私有 + 公共的setter/getter方法 + 空參構(gòu)造器

ORM編程思想(object relational mapping,對(duì)象關(guān)系映射)

① 一個(gè)數(shù)據(jù)表對(duì)應(yīng)一個(gè)JavaBean

② 表中的一條記錄對(duì)應(yīng)JavaBean的一個(gè)對(duì)象

③ 表中的一個(gè)字段對(duì)應(yīng)JavaBean的一個(gè)屬性

(在設(shè)計(jì)實(shí)體類和數(shù)據(jù)庫表時(shí)盡量做到ORM,即屬性名和字段名對(duì)應(yīng),表名和實(shí)體類類名對(duì)應(yīng),可以方便對(duì)數(shù)據(jù)庫表的操作)

實(shí)體類(Entity Class):就是Java中的ORM思想形成的映射,將數(shù)據(jù)庫中的一個(gè)表映射成對(duì)應(yīng)的一個(gè)Java類(就是JavaBean),主要職責(zé)是存儲(chǔ)和管理系統(tǒng)內(nèi)部的信息。

POJO(Plain Ordinary Java Object,普通Java對(duì)象):實(shí)際就是普通JavaBean,是為了避免和EJB混淆所創(chuàng)造的簡稱。

持久化類:是指其實(shí)例需要被持久化到數(shù)據(jù)庫中的類。持久化類符合JavaBean的規(guī)范,包含私有屬性,以及與之對(duì)應(yīng)的getter()和getter()方法。

持久化(Persistence):把數(shù)據(jù)(如內(nèi)存中的對(duì)象)保存到可永久保存的存儲(chǔ)設(shè)備中。(如磁盤、數(shù)據(jù)庫)

持久化的主要應(yīng)用是將內(nèi)存中的對(duì)象存儲(chǔ)在數(shù)據(jù)庫中、磁盤文件或XML文件中等等。

在實(shí)際開發(fā)中,JavaBean、實(shí)體類、POJO、持久類并沒有本質(zhì)的區(qū)別,但都必須滿足JavaBean的規(guī)范。在涉及Spring對(duì)Bean的管理時(shí),稱為JavaBean;在Spring JDBC Template中需要對(duì)數(shù)據(jù)庫進(jìn)行操作,稱為實(shí)體類(Entity Class);在MyBatis等持久化框架中涉及多個(gè)對(duì)象之間的關(guān)系,稱為POJO或持久化類。

之所以有不同的名稱,是因?yàn)樾枰幚淼倪壿媹龊喜煌愃圃诩依锔改附心阈∶?,在學(xué)校老師同學(xué)叫你全名,在銀行辦理業(yè)務(wù)時(shí)工作人員叫你女士/先生,但你還是你,有姓名、性別、身份證號(hào)等屬性,這是你必須要滿足的規(guī)范。

二、Java三層體系

Dao層通過操作實(shí)體類(Entity Class),從而操作數(shù)據(jù)庫中的表,完成對(duì)應(yīng)數(shù)據(jù)的CRUD操作。

1.Dao層

Dao全稱Data Access Object(數(shù)據(jù)訪問對(duì)象)主要負(fù)責(zé)訪問數(shù)據(jù)庫,對(duì)數(shù)據(jù)的CRUD,獲取結(jié)果集返回給Service,不會(huì)涉及事務(wù)。

2.Service層

Service層主要負(fù)責(zé)業(yè)務(wù)邏輯的實(shí)現(xiàn),實(shí)際就是對(duì)Dao層的增刪改查操作的進(jìn)一步封裝,涉及到事務(wù)的操作。

如:獲取數(shù)據(jù)庫連接,關(guān)閉數(shù)據(jù)庫連接,事務(wù)回滾或者一些復(fù)雜的邏輯業(yè)務(wù)處理

3.Controller層

Controller層主要用于對(duì)?業(yè)務(wù)邏輯?進(jìn)行控制,控制用戶輸入,接收來自前端的請(qǐng)求,將需要執(zhí)行的操作交給Service層進(jìn)行處理,再將處理后的結(jié)果返回給前端。

三者之間的關(guān)系

幾乎所有的業(yè)務(wù)邏輯,實(shí)際上最后就是對(duì)數(shù)據(jù)庫表的操作,Dao層面向數(shù)據(jù)庫中的表,Service進(jìn)行事務(wù)、業(yè)務(wù)邏輯的具體實(shí)現(xiàn),Controller層對(duì)接收到的請(qǐng)求進(jìn)行控制,然后負(fù)責(zé)調(diào)用Service層進(jìn)行業(yè)務(wù)邏輯實(shí)現(xiàn),Service層將邏輯處理中需要對(duì)數(shù)據(jù)庫表的操作交給Dao層進(jìn)行數(shù)據(jù)操作,最后將處理結(jié)果逐層返回給前端,用戶就可以看到最后的處理結(jié)果。

三、MVC設(shè)計(jì)模式

MVC是一種軟件設(shè)計(jì)模式,將軟件程序分為3個(gè)核心模塊:模型(Model)、視圖(View)、控制器(Controller)

模型(Model):管理數(shù)據(jù)庫,用于數(shù)據(jù)的封裝和傳輸,實(shí)現(xiàn)具體業(yè)務(wù)功能(事務(wù)處理、算法等)。

視圖(View):負(fù)責(zé)與用戶交互,從模型中獲取數(shù)據(jù)通過網(wǎng)頁向用戶展示,將用戶請(qǐng)求傳遞給控制器進(jìn)行處理。

3.控制器

控制器(Controller):接收用戶請(qǐng)求,對(duì)請(qǐng)求進(jìn)行處理和轉(zhuǎn)發(fā),用于業(yè)務(wù)流程控制,并向模型發(fā)送數(shù)據(jù)。

三者之間的關(guān)系

用戶通過View操作軟件,View將請(qǐng)求傳遞給Controller,Model負(fù)責(zé)數(shù)據(jù)的管理,View負(fù)責(zé)與用戶交互,Controller負(fù)責(zé)對(duì)用戶的請(qǐng)求進(jìn)行響應(yīng),同時(shí),當(dāng)數(shù)據(jù)更新時(shí)會(huì)傳給View然后更新頁面。

三層體系與MVC之間的關(guān)系

三層體系和MVC之間并不矛盾,三層體系是一種編程思想,目的是為了降低模塊之間的耦合,更好的處理業(yè)務(wù)邏輯;MVC是一種軟件設(shè)計(jì)模式,按照功能對(duì)軟件進(jìn)行的模塊化的劃分,目的是為了更好的實(shí)現(xiàn)軟件開發(fā)。二者之間的關(guān)系如下:

關(guān)于MVC設(shè)計(jì)模式在Spring MVC框架中會(huì)進(jìn)行詳細(xì)的說明,Spring后會(huì)說到該種框架。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容