對java實體類的眾多理解:
A .就是屬性類阶冈,通常定義在model層里面
B. 一般的實體類對應(yīng)一個數(shù)據(jù)表,其中的屬性對應(yīng)數(shù)據(jù)表中的字段。
好處:
1.對對象實體的封裝儡湾,體現(xiàn)OO思想。
2.屬性可以對字段定義和狀態(tài)進(jìn)行判斷和過濾
3.把相關(guān)信息用一個實體類封裝后执俩,我們在程序中可以把實體類作為參數(shù)傳遞徐钠,更加方便。
C. 說白了就是為了讓程序員在對數(shù)據(jù)庫操作的時候不用寫SQL語句
D. 就是一個數(shù)據(jù)庫表生成一個類
這樣做對數(shù)據(jù)庫操作起來方便
編寫代碼較少 提高效率 可以使程序員專注邏輯關(guān)系
E. 實體類就是把對某一個表的操作全寫在一個類中.
F. 在Java開發(fā)中經(jīng)常要定義一些實體類役首,這些類的定義的好壞會直接影響尝丐,編寫代碼的質(zhì)量和難易程度,以下是別人總結(jié)的一些經(jīng)驗衡奥。
一爹袁、實體類的名字盡量和數(shù)據(jù)庫的表的名字對應(yīng)相同。
二矮固、實體類應(yīng)該實現(xiàn)java.io.Serializable接口失息。
三、實體類應(yīng)該有個無參的構(gòu)造方法档址。
四盹兢、實體類應(yīng)該有個有參(所有的參數(shù))的構(gòu)造方法。
五守伸、實體類有屬性和方法绎秒,屬性對應(yīng)數(shù)據(jù)庫中表的字段,主要有g(shù)etter和setter方法尼摹。
六见芹、實體類還應(yīng)該有個屬性serialVersionUID。例如:private static final long serialVersionUID = -6125297654796395674L;
七蠢涝、屬性一般是private類型玄呛,方法位public類型,對于數(shù)據(jù)庫自動生成的ID字段對應(yīng)的屬性的set方法應(yīng)為private和二。
G. 實體類中都是實例對象,實例對象在jvm的堆區(qū)中開辟了一個該對象引用空間徘铝,并且讓該引用指向某個實例,類聲明只是在jvm的棧去中開辟了一個該對象引用,沒有讓該引用做任何指向.
例如 :
1.String str;
2.String str = new String ("dgfgg");
1中的只是一個引用,說明str應(yīng)該指向一個String 類型的實例,但還沒對str和堆區(qū)的實例做具體的指向.也就是說它還沒有指向某個實例.
而2中的即定義了一個引用(str)又對str做了具體的指向,它指向的內(nèi)容就是后面new出來的String 實例.
實體類中的構(gòu)造方法+set方法+get方法:
構(gòu)造函數(shù):初始化成員變量
get,set方法儿咱,獲取和改變成員變量的值庭砍,JavaBean規(guī)范規(guī)定只使用get/set訪問成員變量
構(gòu)造函數(shù):你每次寫一個Java文件,實際上都寫了一個類(創(chuàng)建一個類混埠,jvm就會自動為這個類開辟一塊內(nèi)存空間)怠缸。有了類就需要有類對象,要產(chǎn)生類對象就需要構(gòu)造函數(shù)對這個剛剛申請的內(nèi)存空間做一點事钳宪,賦屬性值之類的工作揭北。當(dāng)然扳炬,如果你不寫,它就默認(rèn)有一個Class(){}的構(gòu)造方法出現(xiàn)搔体,當(dāng)然它什么活也不干恨樟。
你的屬性是什么樣的?public?private疚俱?默認(rèn)劝术?還是protected?這四種你找教材務(wù)必弄懂分清,很有用呆奕。如果是private养晋,這種屬性不許別的對象改和讀,但有時候需要改/讀梁钾,怎么辦绳泉?寫一個public void setAbc(xxx){}和一個public xxx getAbc(){}就實現(xiàn)外部讀寫屬性的功能了。
set 姆泻,get完全是自我規(guī)定的零酪,就是設(shè)置初值和獲得值的意思.你也可以修改成其他字符.但是用set ,get還是要好些拇勃,因為你能通過單詞理解你寫的代碼的意思四苇,方便閱讀而已。
總結(jié):實體是就是Java中的O/R Mapping映射潜秋,即數(shù)據(jù)庫中的一個表映射成對應(yīng)的一個Java類,其中還有一個映射文件蛔琅。給定一個較復(fù)雜的實體關(guān)系(如一對一,一對多峻呛,多對多),應(yīng)該熟練地寫出實體類!!
java 實體類其實就是俗稱的POJO,這種類一般不實現(xiàn)特殊框架下的接口,在程序中僅作為數(shù)據(jù)容器用來持久化存儲數(shù)據(jù)用的辜窑。
POJO(PlainOldJavaObjects)簡單的Java對象
它的一般格式就是
publicclassA{
privateStringid;
publicStringgetId{
returnthis.id;
}
publicvoidsetId(Stringid){
this.id=id;
}
}
其實這樣寫的意義就在于封裝钩述,id作為類A的成員變量,也稱屬性穆碎,一般情況下?lián)碛凶x和寫的能力牙勘,我們將id設(shè)為private,則外部無法對其直接進(jìn)行操作所禀,同時通過set方法提供了外部更改其value的方法方面,又通過get方法使外界能讀取該成員變量的值。
序列化的必要性
Java中色徘,一切都是對象恭金,在分布式環(huán)境中經(jīng)常需要將Object從這一端網(wǎng)絡(luò)或設(shè)備傳遞到另一端。這就需要有一種可以在兩端傳輸數(shù)據(jù)的協(xié)議褂策。Java序列化機(jī)制就是為了解決這個問題而產(chǎn)生横腿。
Java對象序列化不僅保留一個對象的數(shù)據(jù)颓屑,而且遞歸保存對象引用的每個對象的數(shù)據(jù)。
Java串行化技術(shù)可以使你將一個對象的狀態(tài)寫入一個Byte流里耿焊,并且可以從其它地方把該Byte流里的數(shù)據(jù)讀出來揪惦,重新構(gòu)造一個相同的對象。這種機(jī)制允許你將對象通過網(wǎng)絡(luò)進(jìn)行傳播罗侯,并可以隨時把對象持久化到數(shù)據(jù)庫器腋、文件等系統(tǒng)里。Java的串行化機(jī)制是RMI钩杰、EJB等技術(shù)的技術(shù)基礎(chǔ)纫塌。用途:利用對象的串行化實現(xiàn)保存應(yīng)用程序的當(dāng)前工作狀態(tài),下次再啟動的時候?qū)⒆詣拥鼗謴?fù)到上次執(zhí)行的狀態(tài)榜苫。
序列化就是一種用來處理對象流的機(jī)制护戳,所謂對象流也就是將對象的內(nèi)容進(jìn)行流化〈共牵可以對流化后的對象進(jìn)行讀寫操作媳荒,也可將流化后的對象傳輸于網(wǎng)絡(luò)之間。序列化是為了解決在對對象流進(jìn)行讀寫操作時所引發(fā)的問題驹饺。
對于一個存在于Java虛擬機(jī)中的對象來說钳枕,其內(nèi)部的狀態(tài)只保持在內(nèi)存中。JVM停止之后赏壹,這些狀態(tài)就丟失了鱼炒。在很多情況下,對象的內(nèi)部狀態(tài)是需要被持久化下來的蝌借。提到持久化昔瞧,最直接的做法是保存到文件系統(tǒng)或是數(shù)據(jù)庫之中。這種做法一般涉及到自定義存儲格式以及繁瑣的數(shù)據(jù)轉(zhuǎn)換菩佑。對象關(guān)系映射(Object-relationalmapping)是一種典型的用關(guān)系數(shù)據(jù)庫來持久化對象的方式自晰,也存在很多直接存儲對象的對象數(shù)據(jù)庫。對象序列化機(jī)制(objectserialization)是Java語言內(nèi)建的一種對象持久化方式稍坯,可以很容易的在JVM中的活動對象和字節(jié)數(shù)組(流)之間進(jìn)行轉(zhuǎn)換酬荞。除了可以很簡單的實現(xiàn)持久化之外,序列化機(jī)制的另外一個重要用途是在遠(yuǎn)程方法調(diào)用中瞧哟,用來對開發(fā)人員屏蔽底層實現(xiàn)細(xì)節(jié)混巧。
序列化參考文檔:https://www.cnblogs.com/kabi/p/9139228.html