Java實體類(entity)作用說明
對java實體類的眾多理解:
A .就是屬性類,通常定義在model層里面
B. 一般的實體類對應一個數據表,其中的屬性對應數據表中的字段。
好處:
1.對對象實體的封裝,體現OO思想。
2.屬性可以對字段定義和狀態進行判斷和過濾
3.把相關信息用一個實體類封裝后,我們在程序中可以把實體類作為參數傳遞,更加方便。
C. 說白了就是為了讓程序員在對數據庫操作的時候不用寫SQL語句
D. 就是一個數據庫表生成一個類
這樣做對數據庫操作起來方便
編寫代碼較少 提高效率 可以使程序員專注邏輯關系
E. 實體類就是把對某一個表的操作全寫在一個類中.
F. 在Java開發中經常要定義一些實體類,這些類的定義的好壞會直接影響,編寫代碼的質量和難易程度,以下是別人總結的一些經驗。
一、實體類的名字盡量和數據庫的表的名字對應相同。
二、實體類應該實現java.io.Serializable接口。
三、實體類應該有個無參的構造方法。
四、實體類應該有個有參(所有的參數)的構造方法。
五、實體類有屬性和方法,屬性對應數據庫中表的字段,主要有getter和setter方法。
六、實體類還應該有個屬性serialVersionUID。例如:private static final long serialVersionUID = -6125297654796395674L;
七、屬性一般是private類型,方法位public類型,對于數據庫自動生成的ID字段對應的屬性的set方法應為private。
G. 實體類中都是實例對象,實例對象在jvm的堆區中開辟了一個該對象引用空間,并且讓該引用指向某個實例,類聲明只是在jvm的棧去中開辟了一個該對象引用,沒有讓該引用做任何指向.
例如 :
1.String str;
2.String str = new String ('dgfgg');
1中的只是一個引用,說明str應該指向一個String 類型的實例,但還沒對str和堆區的實例做具體的指向.也就是說它還沒有指向某個實例.
而2中的即定義了一個引用(str)又對str做了具體的指向,它指向的內容就是后面new出來的String 實例.
實體類中的構造方法+set方法+get方法:
構造函數:初始化成員變量
get,set方法,獲取和改變成員變量的值,JavaBean規范規定只使用get/set訪問成員變量
構造函數:你每次寫一個Java文件,實際上都寫了一個類(創建一個類,jvm就會自動為這個類開辟一塊內存空間)。有了類就需要有類對象,要產生類對象就需要構造函數對這個剛剛申請的內存空間做一點事,賦屬性值之類的工作。當然,如果你不寫,它就默認有一個Class(){}的構造方法出現,當然它什么活也不干。
你的屬性是什么樣的?public?private?默認?還是protected?這四種你找教材務必弄懂分清,很有用。如果是private,這種屬性不許別的對象改和讀,但有時候需要改/讀,怎么辦?寫一個public void setAbc(xxx){}和一個public xxx getAbc(){}就實現外部讀寫屬性的功能了。
set ,get完全是自我規定的,就是設置初值和獲得值的意思.你也可以修改成其他字符.但是用set ,get還是要好些,因為你能通過單詞理解你寫的代碼的意思,方便閱讀而已。
總結:實體是就是Java中的O/R Mapping映射,即數據庫中的一個表映射成對應的一個Java類,其中還有一個映射文件。給定一個較復雜的實體關系(如一對一,一對多,多對多),應該熟練地寫出實體類!!
java 實體類其實就是俗稱的POJO,這種類一般不實現特殊框架下的接口,在程序中僅作為數據容器用來持久化存儲數據用的。
POJO(PlainOldJavaObjects)簡單的Java對象
它的一般格式就是
publicclassA{ privateStringid; publicStringgetId{ returnthis.id; }publicvoidsetId(Stringid){ this.id=id; }}
其實這樣寫的意義就在于封裝,id作為類A的成員變量,也稱屬性,一般情況下擁有讀和寫的能力,我們將id設為private,則外部無法對其直接進行操作,同時通過set方法提供了外部更改其value的方法,又通過get方法使外界能讀取該成員變量的值。
序列化的必要性
Java中,一切都是對象,在分布式環境中經常需要將Object從這一端網絡或設備傳遞到另一端。這就需要有一種可以在兩端傳輸數據的協議。Java序列化機制就是為了解決這個問題而產生。
Java對象序列化不僅保留一個對象的數據,而且遞歸保存對象引用的每個對象的數據。
Java串行化技術可以使你將一個對象的狀態寫入一個Byte流里,并且可以從其它地方把該Byte流里的數據讀出來,重新構造一個相同的對象。這種機制允許你將對象通過網絡進行傳播,并可以隨時把對象持久化到數據庫、文件等系統里。Java的串行化機制是RMI、EJB等技術的技術基礎。用途:利用對象的串行化實現保存應用程序的當前工作狀態,下次再啟動的時候將自動地恢復到上次執行的狀態。
序列化就是一種用來處理對象流的機制,所謂對象流也就是將對象的內容進行流化。可以對流化后的對象進行讀寫操作,也可將流化后的對象傳輸于網絡之間。序列化是為了解決在對對象流進行讀寫操作時所引發的問題。
對于一個存在于Java虛擬機中的對象來說,其內部的狀態只保持在內存中。JVM停止之后,這些狀態就丟失了。在很多情況下,對象的內部狀態是需要被持久化下來的。提到持久化,最直接的做法是保存到文件系統或是數據庫之中。這種做法一般涉及到自定義存儲格式以及繁瑣的數據轉換。
對象關系映射(Object-relationalmapping)是一種典型的用關系數據庫來持久化對象的方式,也存在很多直接存儲對象的對象數據庫。對象序列化機制(objectserialization)是Java語言內建的一種對象持久化方式,可以很容易的在JVM中的活動對象和字節數組(流)之間進行轉換。除了可以很簡單的實現持久化之外,序列化機制的另外一個重要用途是在遠程方法調用中,用來對開發人員屏蔽底層實現細節。
補充知識:java 萬能類型轉化
是什么:
java 萬能類型轉化工具類,提供Short、Integer、Long、short、int、long 和 String之間的互轉,且支持當對象為空時,進行對象的創建。
怎么做:
見代碼:
/** * 如果對象為空,則創建,支持類型裝換 * * 只支持 Long Integer Short 和 String 之間的互轉 * @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; }
為什么?
日常開發中,含有大量的類型轉化和空值處理,提供一個萬能接口很必要……
以上這篇Java實體類(entity)作用說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章: