Java實(shí)體類(entity)作用說明
對java實(shí)體類的眾多理解:
A .就是屬性類,通常定義在model層里面
B. 一般的實(shí)體類對應(yīng)一個數(shù)據(jù)表,其中的屬性對應(yīng)數(shù)據(jù)表中的字段。
好處:
1.對對象實(shí)體的封裝,體現(xiàn)OO思想。
2.屬性可以對字段定義和狀態(tài)進(jìn)行判斷和過濾
3.把相關(guān)信息用一個實(shí)體類封裝后,我們在程序中可以把實(shí)體類作為參數(shù)傳遞,更加方便。
C. 說白了就是為了讓程序員在對數(shù)據(jù)庫操作的時候不用寫SQL語句
D. 就是一個數(shù)據(jù)庫表生成一個類
這樣做對數(shù)據(jù)庫操作起來方便
編寫代碼較少 提高效率 可以使程序員專注邏輯關(guān)系
E. 實(shí)體類就是把對某一個表的操作全寫在一個類中.
F. 在Java開發(fā)中經(jīng)常要定義一些實(shí)體類,這些類的定義的好壞會直接影響,編寫代碼的質(zhì)量和難易程度,以下是別人總結(jié)的一些經(jīng)驗(yàn)。
一、實(shí)體類的名字盡量和數(shù)據(jù)庫的表的名字對應(yīng)相同。
二、實(shí)體類應(yīng)該實(shí)現(xiàn)java.io.Serializable接口。
三、實(shí)體類應(yīng)該有個無參的構(gòu)造方法。
四、實(shí)體類應(yīng)該有個有參(所有的參數(shù))的構(gòu)造方法。
五、實(shí)體類有屬性和方法,屬性對應(yīng)數(shù)據(jù)庫中表的字段,主要有g(shù)etter和setter方法。
六、實(shí)體類還應(yīng)該有個屬性serialVersionUID。例如:private static final long serialVersionUID = -6125297654796395674L;
七、屬性一般是private類型,方法位public類型,對于數(shù)據(jù)庫自動生成的ID字段對應(yīng)的屬性的set方法應(yīng)為private。
G. 實(shí)體類中都是實(shí)例對象,實(shí)例對象在jvm的堆區(qū)中開辟了一個該對象引用空間,并且讓該引用指向某個實(shí)例,類聲明只是在jvm的棧去中開辟了一個該對象引用,沒有讓該引用做任何指向.
例如 :
1.String str;
2.String str = new String ("dgfgg");
1中的只是一個引用,說明str應(yīng)該指向一個String 類型的實(shí)例,但還沒對str和堆區(qū)的實(shí)例做具體的指向.也就是說它還沒有指向某個實(shí)例.
而2中的即定義了一個引用(str)又對str做了具體的指向,它指向的內(nèi)容就是后面new出來的String 實(shí)例.
實(shí)體類中的構(gòu)造方法+set方法+get方法:
構(gòu)造函數(shù):初始化成員變量
get,set方法,獲取和改變成員變量的值,JavaBean規(guī)范規(guī)定只使用get/set訪問成員變量
構(gòu)造函數(shù):你每次寫一個Java文件,實(shí)際上都寫了一個類(創(chuàng)建一個類,jvm就會自動為這個類開辟一塊內(nèi)存空間)。有了類就需要有類對象,要產(chǎn)生類對象就需要構(gòu)造函數(shù)對這個剛剛申請的內(nèi)存空間做一點(diǎn)事,賦屬性值之類的工作。當(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(){}就實(shí)現(xiàn)外部讀寫屬性的功能了。
set ,get完全是自我規(guī)定的,就是設(shè)置初值和獲得值的意思.你也可以修改成其他字符.但是用set ,get還是要好些,因?yàn)槟隳芡ㄟ^單詞理解你寫的代碼的意思,方便閱讀而已。
總結(jié):實(shí)體是就是Java中的O/R Mapping映射,即數(shù)據(jù)庫中的一個表映射成對應(yīng)的一個Java類,其中還有一個映射文件。給定一個較復(fù)雜的實(shí)體關(guān)系(如一對一,一對多,多對多),應(yīng)該熟練地寫出實(shí)體類!!
java 實(shí)體類其實(shí)就是俗稱的POJO,這種類一般不實(shí)現(xiàn)特殊框架下的接口,在程序中僅作為數(shù)據(jù)容器用來持久化存儲數(shù)據(jù)用的。
POJO(PlainOldJavaObjects)簡單的Java對象
它的一般格式就是
publicclassA{ privateStringid; publicStringgetId{ returnthis.id; } publicvoidsetId(Stringid){ this.id=id; } }
其實(shí)這樣寫的意義就在于封裝,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ǔ)。用途:利用對象的串行化實(shí)現(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)換。除了可以很簡單的實(shí)現(xiàn)持久化之外,序列化機(jī)制的另外一個重要用途是在遠(yuǎn)程方法調(diào)用中,用來對開發(fā)人員屏蔽底層實(shí)現(xiàn)細(xì)節(jié)。
補(bǔ)充知識:java 萬能類型轉(zhuǎn)化
是什么:
java 萬能類型轉(zhuǎn)化工具類,提供Short、Integer、Long、short、int、long 和 String之間的互轉(zhuǎn),且支持當(dāng)對象為空時,進(jìn)行對象的創(chuàng)建。
怎么做:
見代碼:
/** * 如果對象為空,則創(chuàng)建,支持類型裝換 * * 只支持 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; }
為什么?
日常開發(fā)中,含有大量的類型轉(zhuǎn)化和空值處理,提供一個萬能接口很必要……
以上這篇Java實(shí)體類(entity)作用說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java線程池參數(shù)位置導(dǎo)致的奪命故障宿主機(jī)打不開
這篇文章主要為大家介紹了java線程池參數(shù)位置導(dǎo)致的奪命故障宿主機(jī)打不開的問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06淺談js文件引用方式及其同步執(zhí)行與異步執(zhí)行
下面小編就為大家?guī)硪黄獪\談js文件引用方式及其同步執(zhí)行與異步執(zhí)行。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10Java實(shí)現(xiàn)二叉樹的示例代碼(遞歸&迭代)
二叉樹(Binary?tree)是樹形結(jié)構(gòu)的一個重要類型。本文將利用Java語言實(shí)現(xiàn)二叉樹,文中的示例代碼講解詳細(xì),需要的同學(xué)可以參考一下2022-03-03Spring@Autowired與@Resource的區(qū)別有哪些
這篇文章主要為大家詳細(xì)介紹了@Autowired與@Resource的區(qū)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02java使用poi讀取excel內(nèi)容方法實(shí)例
本文介紹java使用poi讀取excel內(nèi)容的實(shí)例,大家參考使用吧2014-01-01java?webservice超時時間設(shè)置方法代碼
當(dāng)我們使用WebService進(jìn)行調(diào)用時,有時會出現(xiàn)超時的情況,下面這篇文章主要給大家介紹了關(guān)于java?webservice超時時間設(shè)置方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01Struts2中接收表單數(shù)據(jù)的三種驅(qū)動方式
這篇文章簡單給大家介紹了Struts2中接收表單數(shù)據(jù)的三種驅(qū)動方式,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧2017-07-07