实体类定义规则以及主要实体类详解
1.實(shí)體類概述
?
1.1什么是實(shí)體類
眾所周知實(shí)體類是在java開發(fā)中被應(yīng)運(yùn)到的,但是什么是實(shí)體類?
1.11實(shí)體類的定義
百度百科查閱說:實(shí)體類主要是作為數(shù)據(jù)管理和業(yè)務(wù)邏輯處理層面上存在的類別; 它們主要在分析階段區(qū)分 實(shí)體類的主要職責(zé)是存儲(chǔ)和管理系統(tǒng)內(nèi)部的信息,它也可以有行為,甚至很復(fù)雜的行為,但這些行為必須與它所代表的實(shí)體對(duì)象密切相關(guān)。
?
1.12實(shí)體類的作用
實(shí)體類相當(dāng)于是一個(gè)載體:
1.我們首先在idear中定義我們與數(shù)據(jù)庫(kù)表相對(duì)應(yīng)的實(shí)體類,這個(gè)實(shí)體類映射了我們數(shù)據(jù)庫(kù)表里所對(duì)應(yīng)的信息(很簡(jiǎn)單的解釋就是我們的數(shù)據(jù)庫(kù)里面的表是怎么設(shè)計(jì)的,有多少個(gè)屬性,分別是什么類型,我們就在我們的idear中定義這樣的一個(gè)實(shí)體類)
2.當(dāng)我們要對(duì)目標(biāo)表進(jìn)行操作的時(shí)候,首先會(huì)將目標(biāo)表對(duì)應(yīng)的idear中的實(shí)體類的屬性賦值然后傳到后臺(tái)。
3.后臺(tái)就可以拿到目標(biāo)表對(duì)應(yīng)的對(duì)象的所有屬性的值,(傳遞過來的是一個(gè)對(duì)象,里面帶有所有屬性的值)就不用一個(gè)個(gè)的傳遞參數(shù)了。
4.具體實(shí)現(xiàn)這種數(shù)據(jù)從前臺(tái)到后臺(tái)的聯(lián)系可以通過框架,配置文件來進(jìn)行實(shí)現(xiàn)。
ps:實(shí)體類合適的設(shè)計(jì),能夠很好的實(shí)現(xiàn)信息的隱蔽,使代碼更加簡(jiǎn)潔,設(shè)計(jì)實(shí)體類的時(shí)候要慎重。
2.實(shí)體類定義規(guī)則
2.1 po類(entity):persistent object持久對(duì)象
? 有時(shí)候也被稱為Data對(duì)象,對(duì)應(yīng)數(shù)據(jù)庫(kù)中的entity,可以簡(jiǎn)單認(rèn)為一個(gè)PO對(duì)應(yīng)數(shù)據(jù)庫(kù)中的一條記錄,多個(gè)記錄可以用PO的集合。
2.1.1注意的是:po中不能包含對(duì)任何數(shù)據(jù)庫(kù)的操作。
2.2 vo類:value object表現(xiàn)層對(duì)象
2.2.1 主要對(duì)應(yīng)頁面顯示(web頁面/swt
,swing界面)的數(shù)據(jù)對(duì)象,他的對(duì)應(yīng)對(duì)象可以是一個(gè)WEB頁面,或者SWT、SWING的一個(gè)界面,通常用一個(gè)VO對(duì)象對(duì)應(yīng)整個(gè)界面的值;
2.2.2 可以和表對(duì)應(yīng),也可以不,具體根據(jù)業(yè)務(wù)的需求
2.3 補(bǔ)充po與vo的區(qū)別:
? 2.3.1 VO是值對(duì)象,精確點(diǎn)講它是業(yè)務(wù)對(duì)象,是存活在業(yè)務(wù)層的,是業(yè)務(wù)邏輯使用的,它存活的目的就是為數(shù)據(jù)提供一個(gè)生存的地方
? 2.3.2 VO是用new關(guān)鍵字創(chuàng)建,由GC回收的
? 2.3.3 VO的屬性是根據(jù)當(dāng)前業(yè)務(wù)的不同而不同的,也就是說,它的每一個(gè)屬性都一一對(duì)應(yīng)當(dāng)前業(yè)務(wù)邏輯所需要的數(shù)據(jù)的名稱
? 2.3.4 PO則是向數(shù)據(jù)庫(kù)中添加新數(shù)據(jù)時(shí)創(chuàng)建,刪除數(shù)據(jù)庫(kù)中數(shù)據(jù)時(shí)削除的。并且它只能存活在一個(gè)數(shù)據(jù)庫(kù)連接中,斷開連接即被銷毀
2.3.5 PO則是有狀態(tài)的,每個(gè)屬性代表其當(dāng)前的狀態(tài)。它是物理數(shù)據(jù)的對(duì)象表示。使用它,可以使程序與物理數(shù)據(jù)解耦,并且可以簡(jiǎn)化對(duì)象數(shù)據(jù)與物理數(shù)據(jù)之間的轉(zhuǎn)換
? 2.3.6 PO的屬性是跟數(shù)據(jù)庫(kù)表的字段一一對(duì)應(yīng)的
? 2.3.7 PO對(duì)象需要實(shí)現(xiàn)序列化接口
2.4 DTO(TO):Data Transfer Object 數(shù)據(jù)傳輸對(duì)象
傳遞view層顯示的,我們需要的,client真正需要的字段。
ps:引用狂神大大的描述:比如一張表有100個(gè)字段,對(duì)應(yīng)的PO就有100個(gè)屬性(大多數(shù)情況下,DTO內(nèi)的數(shù)據(jù)來自多個(gè)表)。但view層只需顯示10
個(gè)字段,沒有必要把整個(gè)PO對(duì)象傳遞到client,這時(shí)候我們就可以用只有這10個(gè)屬性的DTO來傳輸數(shù)據(jù)到client,這樣也不會(huì)暴露server端的表結(jié)構(gòu)。到達(dá)客戶端之后,如果用這個(gè)對(duì)象來對(duì)應(yīng)界面顯示,那此時(shí)它的身份就轉(zhuǎn)為VO.
2.5 POJO:plain ordinary java object 無規(guī)則簡(jiǎn)單java對(duì)象
? 此對(duì)象我們就把他看做為了轉(zhuǎn)化為PO,DTO,VO的中間對(duì)象
? pojo持久化之后 —> PO
? pojo作用表示層 —> VO
? pojo 傳輸過程中 —> DTO
2.6 O/R Mapper : Object Relational Mapping:對(duì)象/關(guān)系 映射*
O/R Mapper可以通過mappings將生成的所有關(guān)于對(duì)象保存,刪除,讀取的SQL語句,我們不再需要寫那么多行的DAL代碼了
2.7 QO: Query Object:查詢對(duì)象
存儲(chǔ)一些與持久性查詢操作的語句對(duì)象
例子:
主要作用是把service需要的屬性封裝為一個(gè)對(duì)象。
建立一個(gè)對(duì)應(yīng)查詢的的QO對(duì)象
這樣進(jìn)行查詢時(shí),我們就可以用QO去處理。增刪改的時(shí)候通過下面方法去進(jìn)行轉(zhuǎn)化
2.8 BO:business object:業(yè)務(wù)對(duì)象
封裝業(yè)務(wù)邏輯的java對(duì)象,通過調(diào)用DAO方法,結(jié)合PO,VO進(jìn)行業(yè)務(wù)操作 ;
例子:
主要作用是把業(yè)務(wù)邏輯封裝為一個(gè)對(duì)象。這個(gè)對(duì)象可以包括一個(gè)或多個(gè)其它的對(duì)象。
比如一個(gè)簡(jiǎn)歷,有教育經(jīng)歷、工作經(jīng)歷、社會(huì)關(guān)系等等。
我們可以把教育經(jīng)歷對(duì)應(yīng)一個(gè)PO,工作經(jīng)歷對(duì)應(yīng)一個(gè)PO,社會(huì)關(guān)系對(duì)應(yīng)一個(gè)PO。
建立一個(gè)對(duì)應(yīng)簡(jiǎn)歷的BO對(duì)象處理簡(jiǎn)歷,每個(gè)BO包含這些PO。
這樣處理業(yè)務(wù)邏輯時(shí),我們就可以針對(duì)BO去處理。
2.9 TO Transfer Object:數(shù)據(jù)傳輸對(duì)象
應(yīng)用程序不同關(guān)系之間傳輸?shù)膶?duì)象
3.0 DO Domain Object:領(lǐng)域?qū)ο?/h4>
就是從現(xiàn)實(shí)世界中抽象出來的有形或無形的業(yè)務(wù)實(shí)體
實(shí)體類使用的經(jīng)驗(yàn):
? 1.記得加有參,無參構(gòu)造
? 2.與數(shù)據(jù)庫(kù)表的命名相同(要不然幾十個(gè)表你找你要的字段根本找不到),千萬不要少s,多s什么的
? 3.idear中小駝峰命名,數(shù)據(jù)庫(kù)中才能出現(xiàn)_命名(數(shù)據(jù)庫(kù)把__命名法會(huì)自動(dòng)轉(zhuǎn)化為小駝峰命名)
? 4.實(shí)體類有屬性和方法,屬性對(duì)應(yīng)數(shù)據(jù)庫(kù)中表的字段,方法主要有g(shù)etter和setter方法
5.屬性一般是private類型,方法為public類型,對(duì)于數(shù)據(jù)庫(kù)自動(dòng)生成的ID字段對(duì)應(yīng)的屬性的set方法為private
6.每個(gè)實(shí)體類都最好有自己的id字段
7.實(shí)體類應(yīng)該實(shí)現(xiàn)java.io.Serializable接口
總結(jié)
以上是生活随笔為你收集整理的实体类定义规则以及主要实体类详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sping错误集合
- 下一篇: GAMS-01 GAMS与MATLAB间