Android項(xiàng)目中實(shí)體類(lèi)entity的作用詳解
估計(jì)很多入門(mén)安卓的朋友對(duì)entity很困惑,為什么要寫(xiě)實(shí)體類(lèi)?有什么用?寫(xiě)來(lái)干什么?
對(duì)于實(shí)體類(lèi)的理解我入門(mén)的時(shí)候也是困惑了好久,后面用多了才慢慢理解,這篇博客就當(dāng)復(fù)習(xí)和筆記。
Java中entity(實(shí)體類(lèi))的寫(xiě)法規(guī)范
在日常的Java項(xiàng)目開(kāi)發(fā)中,entity(實(shí)體類(lèi))是必不可少的,它們一般都有很多的屬性,并有相應(yīng)的setter和getter方法。entity(實(shí)體類(lèi))的作用一般是和數(shù)據(jù)表做映射。所以快速寫(xiě)出規(guī)范的entity(實(shí)體類(lèi))是java開(kāi)發(fā)中一項(xiàng)必不可少的技能。
在項(xiàng)目中寫(xiě)實(shí)體類(lèi)一般遵循下面的規(guī)范:
1、根據(jù)你的設(shè)計(jì),定義一組你需要的私有屬性。
2、根據(jù)這些屬性,創(chuàng)建它們的setter和getter方法。(eclipse等IDE可以自動(dòng)生成。具體怎么生成?請(qǐng)自行百度。)
3、提供帶參數(shù)的構(gòu)造器和無(wú)參數(shù)的構(gòu)造器。
4、重寫(xiě)父類(lèi)中的eauals()方法和hashcode()方法。(如果需要涉及到兩個(gè)對(duì)象之間的比較,這兩個(gè)功能很重要。)
對(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訪(fǎng)問(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)!!
以上這篇Android項(xiàng)目中實(shí)體類(lèi)entity的作用詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. python中scrapy處理項(xiàng)目數(shù)據(jù)的實(shí)例分析2. 教你在 IntelliJ IDEA 中使用 VIM插件的詳細(xì)教程3. GIT相關(guān)-IDEA/ECLIPSE工具配置的教程詳解4. Django ORM實(shí)現(xiàn)按天獲取數(shù)據(jù)去重求和例子5. Python requests庫(kù)參數(shù)提交的注意事項(xiàng)總結(jié)6. 快速搭建Spring Boot+MyBatis的項(xiàng)目IDEA(附源碼下載)7. js抽獎(jiǎng)轉(zhuǎn)盤(pán)實(shí)現(xiàn)方法分析8. IntelliJ IDEA導(dǎo)入jar包的方法9. 如何基于Python實(shí)現(xiàn)word文檔重新排版10. vue-electron中修改表格內(nèi)容并修改樣式
