Java實(shí)體類(lèi)(entity)作用說(shuō)明
對(duì)java實(shí)體類(lèi)的眾多理解:
A .就是屬性類(lèi),通常定義在model層里面
B. 一般的實(shí)體類(lèi)對(duì)應(yīng)一個(gè)數(shù)據(jù)表,其中的屬性對(duì)應(yīng)數(shù)據(jù)表中的字段。
好處:
1.對(duì)對(duì)象實(shí)體的封裝,體現(xiàn)OO思想。
2.屬性可以對(duì)字段定義和狀態(tài)進(jìn)行判斷和過(guò)濾
3.把相關(guān)信息用一個(gè)實(shí)體類(lèi)封裝后,我們?cè)诔绦蛑锌梢园褜?shí)體類(lèi)作為參數(shù)傳遞,更加方便。
C. 說(shuō)白了就是為了讓程序員在對(duì)數(shù)據(jù)庫(kù)操作的時(shí)候不用寫(xiě)SQL語(yǔ)句
D. 就是一個(gè)數(shù)據(jù)庫(kù)表生成一個(gè)類(lèi)
這樣做對(duì)數(shù)據(jù)庫(kù)操作起來(lái)方便
編寫(xiě)代碼較少 提高效率 可以使程序員專(zhuān)注邏輯關(guān)系
E. 實(shí)體類(lèi)就是把對(duì)某一個(gè)表的操作全寫(xiě)在一個(gè)類(lèi)中.
F. 在Java開(kāi)發(fā)中經(jīng)常要定義一些實(shí)體類(lèi),這些類(lèi)的定義的好壞會(huì)直接影響,編寫(xiě)代碼的質(zhì)量和難易程度,以下是別人總結(jié)的一些經(jīng)驗(yàn)。
一、實(shí)體類(lèi)的名字盡量和數(shù)據(jù)庫(kù)的表的名字對(duì)應(yīng)相同。
二、實(shí)體類(lèi)應(yīng)該實(shí)現(xiàn)java.io.Serializable接口。
三、實(shí)體類(lèi)應(yīng)該有個(gè)無(wú)參的構(gòu)造方法。
四、實(shí)體類(lèi)應(yīng)該有個(gè)有參(所有的參數(shù))的構(gòu)造方法。
五、實(shí)體類(lèi)有屬性和方法,屬性對(duì)應(yīng)數(shù)據(jù)庫(kù)中表的字段,主要有g(shù)etter和setter方法。
六、實(shí)體類(lèi)還應(yīng)該有個(gè)屬性serialVersionUID。例如:private static final long serialVersionUID = -6125297654796395674L;
七、屬性一般是private類(lèi)型,方法位public類(lèi)型,對(duì)于數(shù)據(jù)庫(kù)自動(dòng)生成的ID字段對(duì)應(yīng)的屬性的set方法應(yīng)為private。
G. 實(shí)體類(lèi)中都是實(shí)例對(duì)象,實(shí)例對(duì)象在jvm的堆區(qū)中開(kāi)辟了一個(gè)該對(duì)象引用空間,并且讓該引用指向某個(gè)實(shí)例,類(lèi)聲明只是在jvm的棧去中開(kāi)辟了一個(gè)該對(duì)象引用,沒(méi)有讓該引用做任何指向.
例如 :
1.String str;
2.String str = new String ('dgfgg');
1中的只是一個(gè)引用,說(shuō)明str應(yīng)該指向一個(gè)String 類(lèi)型的實(shí)例,但還沒(méi)對(duì)str和堆區(qū)的實(shí)例做具體的指向.也就是說(shuō)它還沒(méi)有指向某個(gè)實(shí)例.
而2中的即定義了一個(gè)引用(str)又對(duì)str做了具體的指向,它指向的內(nèi)容就是后面new出來(lái)的String 實(shí)例.
實(shí)體類(lèi)中的構(gòu)造方法+set方法+get方法:
構(gòu)造函數(shù):初始化成員變量
get,set方法,獲取和改變成員變量的值,JavaBean規(guī)范規(guī)定只使用get/set訪問(wèn)成員變量
構(gòu)造函數(shù):你每次寫(xiě)一個(gè)Java文件,實(shí)際上都寫(xiě)了一個(gè)類(lèi)(創(chuàng)建一個(gè)類(lèi),jvm就會(huì)自動(dòng)為這個(gè)類(lèi)開(kāi)辟一塊內(nèi)存空間)。有了類(lèi)就需要有類(lèi)對(duì)象,要產(chǎn)生類(lèi)對(duì)象就需要構(gòu)造函數(shù)對(duì)這個(gè)剛剛申請(qǐng)的內(nèi)存空間做一點(diǎn)事,賦屬性值之類(lèi)的工作。當(dāng)然,如果你不寫(xiě),它就默認(rèn)有一個(gè)Class(){}的構(gòu)造方法出現(xiàn),當(dāng)然它什么活也不干。
你的屬性是什么樣的?public?private?默認(rèn)?還是protected?這四種你找教材務(wù)必弄懂分清,很有用。如果是private,這種屬性不許別的對(duì)象改和讀,但有時(shí)候需要改/讀,怎么辦?寫(xiě)一個(gè)public void setAbc(xxx){}和一個(gè)public xxx getAbc(){}就實(shí)現(xiàn)外部讀寫(xiě)屬性的功能了。
set ,get完全是自我規(guī)定的,就是設(shè)置初值和獲得值的意思.你也可以修改成其他字符.但是用set ,get還是要好些,因?yàn)槟隳芡ㄟ^(guò)單詞理解你寫(xiě)的代碼的意思,方便閱讀而已。
總結(jié):實(shí)體是就是Java中的O/R Mapping映射,即數(shù)據(jù)庫(kù)中的一個(gè)表映射成對(duì)應(yīng)的一個(gè)Java類(lèi),其中還有一個(gè)映射文件。給定一個(gè)較復(fù)雜的實(shí)體關(guān)系(如一對(duì)一,一對(duì)多,多對(duì)多),應(yīng)該熟練地寫(xiě)出實(shí)體類(lèi)!!
java 實(shí)體類(lèi)其實(shí)就是俗稱(chēng)的POJO,這種類(lèi)一般不實(shí)現(xiàn)特殊框架下的接口,在程序中僅作為數(shù)據(jù)容器用來(lái)持久化存儲(chǔ)數(shù)據(jù)用的。
POJO(PlainOldJavaObjects)簡(jiǎn)單的Java對(duì)象
它的一般格式就是
publicclassA{ privateStringid; publicStringgetId{ returnthis.id; }publicvoidsetId(Stringid){ this.id=id; }}
其實(shí)這樣寫(xiě)的意義就在于封裝,id作為類(lèi)A的成員變量,也稱(chēng)屬性,一般情況下?lián)碛凶x和寫(xiě)的能力,我們將id設(shè)為private,則外部無(wú)法對(duì)其直接進(jìn)行操作,同時(shí)通過(guò)set方法提供了外部更改其value的方法,又通過(guò)get方法使外界能讀取該成員變量的值。
序列化的必要性
Java中,一切都是對(duì)象,在分布式環(huán)境中經(jīng)常需要將Object從這一端網(wǎng)絡(luò)或設(shè)備傳遞到另一端。這就需要有一種可以在兩端傳輸數(shù)據(jù)的協(xié)議。Java序列化機(jī)制就是為了解決這個(gè)問(wèn)題而產(chǎn)生。
Java對(duì)象序列化不僅保留一個(gè)對(duì)象的數(shù)據(jù),而且遞歸保存對(duì)象引用的每個(gè)對(duì)象的數(shù)據(jù)。
Java串行化技術(shù)可以使你將一個(gè)對(duì)象的狀態(tài)寫(xiě)入一個(gè)Byte流里,并且可以從其它地方把該Byte流里的數(shù)據(jù)讀出來(lái),重新構(gòu)造一個(gè)相同的對(duì)象。這種機(jī)制允許你將對(duì)象通過(guò)網(wǎng)絡(luò)進(jìn)行傳播,并可以隨時(shí)把對(duì)象持久化到數(shù)據(jù)庫(kù)、文件等系統(tǒng)里。Java的串行化機(jī)制是RMI、EJB等技術(shù)的技術(shù)基礎(chǔ)。用途:利用對(duì)象的串行化實(shí)現(xiàn)保存應(yīng)用程序的當(dāng)前工作狀態(tài),下次再啟動(dòng)的時(shí)候?qū)⒆詣?dòng)地恢復(fù)到上次執(zhí)行的狀態(tài)。
序列化就是一種用來(lái)處理對(duì)象流的機(jī)制,所謂對(duì)象流也就是將對(duì)象的內(nèi)容進(jìn)行流化。可以對(duì)流化后的對(duì)象進(jìn)行讀寫(xiě)操作,也可將流化后的對(duì)象傳輸于網(wǎng)絡(luò)之間。序列化是為了解決在對(duì)對(duì)象流進(jìn)行讀寫(xiě)操作時(shí)所引發(fā)的問(wèn)題。
對(duì)于一個(gè)存在于Java虛擬機(jī)中的對(duì)象來(lái)說(shuō),其內(nèi)部的狀態(tài)只保持在內(nèi)存中。JVM停止之后,這些狀態(tài)就丟失了。在很多情況下,對(duì)象的內(nèi)部狀態(tài)是需要被持久化下來(lái)的。提到持久化,最直接的做法是保存到文件系統(tǒng)或是數(shù)據(jù)庫(kù)之中。這種做法一般涉及到自定義存儲(chǔ)格式以及繁瑣的數(shù)據(jù)轉(zhuǎn)換。
對(duì)象關(guān)系映射(Object-relationalmapping)是一種典型的用關(guān)系數(shù)據(jù)庫(kù)來(lái)持久化對(duì)象的方式,也存在很多直接存儲(chǔ)對(duì)象的對(duì)象數(shù)據(jù)庫(kù)。對(duì)象序列化機(jī)制(objectserialization)是Java語(yǔ)言內(nèi)建的一種對(duì)象持久化方式,可以很容易的在JVM中的活動(dòng)對(duì)象和字節(jié)數(shù)組(流)之間進(jìn)行轉(zhuǎn)換。除了可以很簡(jiǎn)單的實(shí)現(xiàn)持久化之外,序列化機(jī)制的另外一個(gè)重要用途是在遠(yuǎn)程方法調(diào)用中,用來(lái)對(duì)開(kāi)發(fā)人員屏蔽底層實(shí)現(xiàn)細(xì)節(jié)。
補(bǔ)充知識(shí):java 萬(wàn)能類(lèi)型轉(zhuǎn)化
是什么:
java 萬(wàn)能類(lèi)型轉(zhuǎn)化工具類(lèi),提供Short、Integer、Long、short、int、long 和 String之間的互轉(zhuǎn),且支持當(dāng)對(duì)象為空時(shí),進(jìn)行對(duì)象的創(chuàng)建。
怎么做:
見(jiàn)代碼:
/** * 如果對(duì)象為空,則創(chuàng)建,支持類(lèi)型裝換 * * 只支持 Long Integer Short 和 String 之間的互轉(zhuǎn) * @param obj Object * @param clazz Class<T> * @param <T> T * @return <T> */ public static <T> T ifNullCreate(Object obj,Class<T> clazz){ T result = null; if(obj == null){ try {result = clazz.newInstance(); } catch (Exception e) {e.printStackTrace(); } }else { if(clazz.isInstance(obj)){result = (T)obj ; }else if (clazz.equals(Long.class) && obj.getClass().equals(String.class)){Object o = Long.parseLong((String)obj) ;result = (T)o; }else if (clazz.equals(Integer.class) && obj.getClass().equals(String.class)){Object o = Integer.parseInt((String)obj) ;result = (T)o; }else if (clazz.equals(Short.class) && obj.getClass().equals(String.class)){Object o = Short.parseShort((String)obj) ;result = (T)o; }else if (clazz.equals(String.class) && ( obj.getClass().equals(Long.class) || obj.getClass().equals(long.class) || obj.getClass().equals(int.class) || obj.getClass().equals(Integer.class) || obj.getClass().equals(short.class) || obj.getClass().equals(Short.class) )){Object o = String.valueOf(obj) ;result = (T)o; } } return result; }
為什么?
日常開(kāi)發(fā)中,含有大量的類(lèi)型轉(zhuǎn)化和空值處理,提供一個(gè)萬(wàn)能接口很必要……
以上這篇Java實(shí)體類(lèi)(entity)作用說(shuō)明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. asp(vbscript)中自定義函數(shù)的默認(rèn)參數(shù)實(shí)現(xiàn)代碼2. Ajax實(shí)現(xiàn)表格中信息不刷新頁(yè)面進(jìn)行更新數(shù)據(jù)3. jsp EL表達(dá)式詳解4. jsp中sitemesh修改tagRule技術(shù)分享5. JavaWeb Servlet中url-pattern的使用6. 爬取今日頭條Ajax請(qǐng)求7. 如何使用瀏覽器擴(kuò)展篡改網(wǎng)頁(yè)中的JS 文件8. ASP基礎(chǔ)知識(shí)VBScript基本元素講解9. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)10. JSP servlet實(shí)現(xiàn)文件上傳下載和刪除
