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