最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javaSE基礎(chǔ)如何通俗的理解javaBean是什么

 更新時(shí)間:2021年10月15日 10:50:09   作者:spring小楊  
所謂的Java Bean,就是一個(gè)java類,編譯后成為了一個(gè)后綴名是 .class的文件。這就是Java Bean,很多初學(xué)者,包括當(dāng)年的我自己,總是被這些專有名詞搞的暈頭轉(zhuǎn)向

去公司面試,對(duì)方一口一個(gè)controller,一口一個(gè)service,dao,搞得我很緊張。其實(shí)都是很簡(jiǎn)單的東西,只是自己當(dāng)時(shí)不知道罷了,接觸之后才發(fā)現(xiàn),不就是Java類嗎?

1. 什么是 Java Bean?

很多培訓(xùn)機(jī)構(gòu)在講java基礎(chǔ)的時(shí)候,基本都會(huì)寫(xiě)這樣的代碼:

package com.springmvc.bean;
public class Person {
	private String name; // 姓名
	private Integer age; // 年齡
	private String gender;// 性別
	private String hobby;// 愛(ài)好
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getHobby() {
		return hobby;
	}
	public void setHobby(String hobby) {
		this.hobby = hobby;
	}
}

毋庸置疑,這就是一個(gè)java bean。

在很多教材上,我們都被告知,現(xiàn)實(shí)中有人,分為男人和女人,這是一個(gè)類。然后,我們用java的面向?qū)ο髮⑷顺橄蟪梢粋€(gè)Java類 —— Person類。

這固然不錯(cuò),然而,也就只是如此而已了。沒(méi)有什么其他的東西,弄了半天,我們初學(xué)者學(xué)java,都在那寫(xiě)人類,車(chē)子類,房子類,等等。學(xué)繼承的時(shí)候,總是寫(xiě)這樣的代碼,老師也舉類似這樣的例子。

package com.springmvc.bean;

/**
 * 水果類
 * 
 */
public class Fruit {

	private String name; //水果的名稱
	private Float price;//價(jià)格
	
	public Fruit(String name, Float price) {
		super();
		this.name = name;
		this.price = price;
	}
	 // getters  和 setters 省略
}
package com.springmvc.bean;
/**
 * 蘋(píng)果類
 */
public class Apple extends Fruit {
	
	private String color;//顏色

	public Apple(String name, Float price,String color) {
		super(name, price);
		this.color = color;
	}

      // getters  和 setters 省略

}

沒(méi)錯(cuò),這些都是Java Bean,對(duì)于初學(xué)者,這些例子的確比較好理解。但是,這樣就有個(gè)弊端,它很容易讓人產(chǎn)生一種迷茫,就是說(shuō),這些例子我固然聽(tīng)得懂,但是,我不知道學(xué)這些有什么用?我看過(guò)很多培訓(xùn)機(jī)構(gòu)的視頻,里面多半都是這么講的,這導(dǎo)致我整個(gè)JavaSE都學(xué)完了,還是不知道自己能干嘛?

去企業(yè)面試,人家一口一個(gè)專業(yè)詞匯,弄得我好不尷尬。

想想也知道,去企業(yè)里不可能讓我寫(xiě)這種代碼的。歸根到底,還是這些例子不實(shí)用。再舉個(gè)例子,學(xué)校學(xué)數(shù)據(jù)庫(kù)的時(shí)候,肯定會(huì)舉一個(gè)被舉了N多次的例子,就是有一張學(xué)生表,學(xué)生有姓名,性別,課程,分?jǐn)?shù)。然后來(lái)一個(gè)

select * from t_student;

恩,我的確聽(tīng)懂了,可是,然后呢。。。?

然后?我們只負(fù)責(zé)領(lǐng)你入門(mén),你學(xué)費(fèi)也交了,你趕緊去企業(yè)里面學(xué)吧!

好吧,說(shuō)多了都是淚。我就見(jiàn)過(guò)好多簡(jiǎn)歷被包裝過(guò)的培訓(xùn)生,結(jié)果一進(jìn)來(lái),連JSON都不知道是啥,ajax也不清楚怎么用。讓寫(xiě)個(gè)多表查詢或者連表查詢吧,琢磨個(gè)半天還是寫(xiě)不出來(lái)。

我個(gè)人主張實(shí)用主義,所以,本節(jié)就 JavaBean 的基本概念來(lái)稍微延伸一下,看看我學(xué)這些東西,什么String,Integer啊,數(shù)據(jù)庫(kù)啊,到底可以用在哪里?

2. 需求分析

舉個(gè)例子咯,就拿簡(jiǎn)書(shū)來(lái)說(shuō)好了,比如一個(gè)文章列表:

每一條數(shù)據(jù),說(shuō)實(shí)話,就是一個(gè)對(duì)象,對(duì)象有各種屬性,從圖片中,我們起碼就可以獲得這些信息:

一篇文章具備的屬性:

1.發(fā)布時(shí)間
2.文章標(biāo)題
3.點(diǎn)擊量
4.評(píng)論數(shù)
5.點(diǎn)贊數(shù)
6.顯示圖片

當(dāng)然,還需要有文章內(nèi)容(因?yàn)槭桥e例子,我就先不寫(xiě)了),這些屬性,不就是Java類里面修飾符為private的私有屬性嗎?對(duì)應(yīng)數(shù)據(jù)庫(kù)表里面,這些就是所謂的字段。

你可能會(huì)說(shuō),對(duì)啊,可是我為什么要專門(mén)去寫(xiě)一個(gè)JavaBean來(lái)承載這些數(shù)據(jù)呢?我用一個(gè)HashMap不是也一樣嗎?

是的,從某種程度上,的確可以,可是,用JavaBean的話更加清晰明了。

你可能寫(xiě)了很久的代碼,都不清楚到底為什么要定義JavaBean,尤其是做JavaWeb開(kāi)發(fā)的時(shí)候,Java的作用其實(shí)就是兩句話:

1 控制數(shù)據(jù)的流向,將前臺(tái)傳過(guò)來(lái)的數(shù)據(jù)包起來(lái),然后一個(gè)一個(gè)地插入數(shù)據(jù)庫(kù)永久保存。

2 從數(shù)據(jù)庫(kù)中用jdbc取出數(shù)據(jù),然后包起來(lái),最終傳遞到前臺(tái)頁(yè)面進(jìn)行公開(kāi)展覽

JavaBean就是一個(gè)中轉(zhuǎn)載體。

不就是這么回事嗎?作為碼農(nóng)的我們,每天不就是在做這些事情嗎?這就是所謂的增刪改查。

最多就是,我們很根據(jù)業(yè)務(wù)需求,通過(guò)寫(xiě)Java代碼,來(lái)進(jìn)行一些邏輯的控制,說(shuō)穿了就是:

數(shù)據(jù)不是你想增,想增就能增。

數(shù)據(jù)不是你想刪,想刪就能刪。

數(shù)據(jù)不是你想改,想改就能改。

數(shù)據(jù)不是你想查,想查就能查。

查個(gè)權(quán)限 , 做個(gè)判斷 , 放手你的愛(ài)。

不就是這么回事嗎?

什么JavaBean,dao,事務(wù)管理,切面,這些我認(rèn)為反而是次要的,都是一些專業(yè)術(shù)語(yǔ)的堆積,作為一名碼農(nóng),我認(rèn)為首先得知道,自己每天到底在干嘛,然后根據(jù)需要再去學(xué)對(duì)應(yīng)的知識(shí)或者理論來(lái)給自己充電。

不要連本職工作都還沒(méi)做好,就一會(huì)跟風(fēng)去學(xué)大數(shù)據(jù),一會(huì)又去學(xué)bootstrap,node.js,我不是說(shuō)多學(xué)點(diǎn)技術(shù)不好。而是,我認(rèn)為還是要分一個(gè)輕重緩急,比如你現(xiàn)在待的公司,根本用不到大數(shù)據(jù),你花了那么多精力去學(xué)了又怎樣呢?

再說(shuō)個(gè)實(shí)際的,如果你的網(wǎng)站訪問(wèn)量每個(gè)月1千都達(dá)不到,你高并發(fā),分布式學(xué)得再好,又能怎么樣呢?

再說(shuō)了,如果一個(gè)網(wǎng)站真的做大了,到最后其實(shí)都是拼的服務(wù)器,而不是技術(shù)。

當(dāng)你確實(shí)需要用到大數(shù)據(jù)了,再去學(xué),也行啊。到那個(gè)時(shí)候,公司肯定會(huì)想辦法的,實(shí)在不行,向外招人也是非常必要的。

可是,還沒(méi)有達(dá)到那個(gè)層次之前,說(shuō)句大白話,你的工資只跟你對(duì)當(dāng)前崗位的適應(yīng)程度掛鉤。你不可能說(shuō),我已經(jīng)學(xué)了大數(shù)據(jù)了,就跑到老板的辦公室要求漲工資吧。也不現(xiàn)實(shí)啊,你覺(jué)得呢?

好了,回到正題,剛才我們從圖片中獲取了這么多字段:

1.發(fā)布時(shí)間
2.文章標(biāo)題
3.點(diǎn)擊量
4.評(píng)論數(shù)
5.點(diǎn)贊數(shù)
6.顯示圖片

其實(shí)可以分為必要字段和輔助字段。所謂的必要字段,就是作為一篇文章,必須要有的屬性。

像發(fā)布時(shí)間,文章標(biāo)題,還有文章內(nèi)容,這些都是必要字段。

輔助字段就是,為了方便對(duì)這篇文章進(jìn)行控制,需要設(shè)置的字段。比如,

這篇文章是否能夠被看到?

這篇文章是否已經(jīng)刪除?

這篇文章是否應(yīng)該被排在前面?

對(duì)應(yīng)的,我們可以設(shè)置這些字段,

1. 是否發(fā)布 :  0 未發(fā)布 1 發(fā)布
2. 是否刪除 : 0 未刪除 1 已刪除
3. 點(diǎn)擊量,評(píng)論數(shù),點(diǎn)贊數(shù) 這些字段可用于生成一個(gè)熱度,如果熱度很高,那么就應(yīng)該被排在前面,被更多的人看到。(這些字段看做主要字段也可以)

順便提一句,實(shí)際開(kāi)發(fā)的時(shí)候,基本用不到delete語(yǔ)句的,刪除都是用的邏輯刪除,就是說(shuō),將某一個(gè)字段(is_delete)從 0 變?yōu)?1,表示已刪除。這樣的好處就是,萬(wàn)一這條數(shù)據(jù)以后想恢復(fù)的話,直接改變那個(gè)字段的值就OK了。我查詢數(shù)據(jù)的時(shí)候,在where條件里面加一個(gè) is_delete = 1 不就好了,那么刪除的數(shù)據(jù)就不會(huì)被查出來(lái)了。

為什么要這么做呢?

比如,游戲中物品丟失了,怎么找回呢?如果直接delete掉了,那么就真的GG了。只要數(shù)據(jù)還在,一切都好說(shuō),我大不了不讓它顯示就是了,萬(wàn)一要找回就能直接找回了。嗯,一般都是這么做的。

3. JavaBean設(shè)計(jì)

接下來(lái),我們來(lái)設(shè)計(jì)這個(gè)JavaBean。打開(kāi)Eclipse,我以之前那個(gè)springmvc的案例來(lái)舉例,現(xiàn)在新建一個(gè)包,就叫做bean,里面是專門(mén)用來(lái)存放這些JavaBean的,然后新建一個(gè)類 —— Article(文章類)

Paste_Image.png

public class Article {
	
}

開(kāi)始設(shè)計(jì)字段。

首先,我們知道,這些數(shù)據(jù)最終是要存儲(chǔ)到數(shù)據(jù)庫(kù)表的,那么就肯定需要有一個(gè)id,作為它的主鍵,我們就用String吧,然后用uuid主鍵生成策略。

private String id; //主鍵 UUID

主鍵就是這一條數(shù)據(jù)的身份證,是唯一的,不允許重復(fù)。

必要字段,或者叫主要字段

private Date publishTime;	//發(fā)布時(shí)間
private String title;	 	//文章標(biāo)題
private String pictureLine;	//圖片鏈接地址

輔助字段:

private Integer hitNum;		//點(diǎn)擊量
private Integer commentNum; //評(píng)論數(shù)
private Integer loveNum;	//點(diǎn)贊數(shù)
private Integer isPublished; //是否發(fā)布 0 未發(fā)布 1 發(fā)布
private Integer isDelete;	  //是否刪除   0 未刪除 1 已刪除

最后,一般來(lái)說(shuō),我們還需要記錄一些類似于日志的信息,比如這篇文章是什么時(shí)候創(chuàng)建的,這個(gè)創(chuàng)建的時(shí)間是不是可以記錄下來(lái)呢?另外,是誰(shuí)創(chuàng)建的,我們是不是可以記錄下用戶的id呢?還有,文章是可以被多次修改的,那么,最后一次修改的時(shí)間是不是需要被記錄下來(lái)呢?

先就說(shuō)這么多吧,JavaBean的設(shè)計(jì)需要根據(jù)具體的業(yè)務(wù)需求來(lái)定,我這里只是舉一個(gè)例子而已。

private String userId; //用戶ID
private Date createTime;//創(chuàng)建時(shí)間
private Date updateTime;//最后更新時(shí)間

這樣一來(lái)就差不多了,最后,利用Eclipse的快捷鍵 alt + s,點(diǎn)擊Generate Getters and Setters… ,選擇全部字段,再點(diǎn)擊OK。

最后,鼠標(biāo)右鍵,Source —— Format,格式化一下,一個(gè)JavaBean就做好了。

當(dāng)你寫(xiě)完了JavaBean,差不多也就相當(dāng)于設(shè)計(jì)好了數(shù)據(jù)庫(kù)表。我們?cè)趯?xiě)JavaBean的時(shí)候,屬性一般都用駝峰法來(lái)命名,而數(shù)據(jù)庫(kù)表有點(diǎn)不一樣,就是在駝峰的地方,大寫(xiě)字母要改為小寫(xiě)字母,然后加上一個(gè)下劃線。

比如

userId,對(duì)應(yīng)的數(shù)據(jù)庫(kù)表字段名稱就是 user_id,一般都是這么命名的。

在實(shí)際開(kāi)發(fā)過(guò)程中,差不多就是這樣:

前臺(tái)頁(yè)面(可能是在一張表單Form里面填寫(xiě)數(shù)據(jù)) —— 保存 —— ajax傳遞到Controller層 —— 與JavaBean做映射,將這些數(shù)據(jù)保存到JavaBean中 —— 進(jìn)入Service層,這里對(duì)數(shù)據(jù)進(jìn)行一些邏輯操作和判斷。有歌為證:

Paste_Image.png

—— 最后,進(jìn)入Dao層,直接訪問(wèn)數(shù)據(jù)庫(kù),進(jìn)行各種操作。

好了,這一節(jié)對(duì)JavaBean做了一些簡(jiǎn)短的,額,簡(jiǎn)短的介紹。下一節(jié)我會(huì)稍微深入一些。總之,初學(xué)Java的時(shí)候,千萬(wàn)不要被這些專業(yè)術(shù)語(yǔ)給嚇到,它真的沒(méi)你想的那么難。

如果你總是想著復(fù)雜,那么你永遠(yuǎn)看不到簡(jiǎn)單。直到有一天你發(fā)現(xiàn),所有的麻煩都只在你的心中。

以上就是javaSE基礎(chǔ)如何通俗的理解javaBean是什么的詳細(xì)內(nèi)容,更多關(guān)于javaSE理解javabean的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java 中的 getDeclaredMethods() 方法(使用與原理)

    Java 中的 getDeclaredMethods() 方法(使用與原理)

    文章介紹了Java反射機(jī)制中的`getDeclaredMethods()`方法,詳細(xì)講解了其使用方法、原理、注意事項(xiàng)以及實(shí)際應(yīng)用場(chǎng)景,幫助讀者更好地理解和應(yīng)用這一強(qiáng)大的工具,感興趣的朋友一起看看吧
    2024-12-12
  • JavaWeb開(kāi)發(fā)之模仿知乎首頁(yè)完整代碼

    JavaWeb開(kāi)發(fā)之模仿知乎首頁(yè)完整代碼

    這篇文章主要介紹了JavaWeb開(kāi)發(fā)之模仿知乎首頁(yè)完整代碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • Java8中的Stream流式操作教程之王者歸來(lái)

    Java8中的Stream流式操作教程之王者歸來(lái)

    這篇文章主要給大家介紹了關(guān)于Java8中Stream流式操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java8具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • java實(shí)現(xiàn)題目以及選項(xiàng)亂序的方法實(shí)例

    java實(shí)現(xiàn)題目以及選項(xiàng)亂序的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)題目以及選項(xiàng)亂序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • java使用dbcp2數(shù)據(jù)庫(kù)連接池

    java使用dbcp2數(shù)據(jù)庫(kù)連接池

    這篇文章主要為大家詳細(xì)介紹了java使用dbcp2數(shù)據(jù)庫(kù)連接池的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Java多線程中的死鎖詳解

    Java多線程中的死鎖詳解

    這篇文章主要介紹了Java多線程中的死鎖詳解,死鎖是指兩個(gè)或多個(gè)線程在執(zhí)行過(guò)程中,因爭(zhēng)奪資源而造成的一種互相等待的現(xiàn)象,如果不提前預(yù)防或外界干擾,這些線程將無(wú)法執(zhí)行下去,需要的朋友可以參考下
    2023-08-08
  • BeanDefinition基礎(chǔ)信息講解

    BeanDefinition基礎(chǔ)信息講解

    今天小編就為大家分享一篇關(guān)于BeanDefinition基礎(chǔ)信息講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • Java ThreadLocal的使用場(chǎng)景總結(jié)

    Java ThreadLocal的使用場(chǎng)景總結(jié)

    ThreadLocal原本設(shè)計(jì)是為了解決并發(fā)時(shí),線程共享變量的問(wèn)題,但由于過(guò)度設(shè)計(jì),從而導(dǎo)致它的理解難度大和使用成本高等問(wèn)題。即便如此,ThreadLocal依舊有適合自己的使用場(chǎng)景,比如本文要介紹了這兩種使用場(chǎng)景,除了ThreadLocal之外,還真沒(méi)有合適的替代方案。
    2021-05-05
  • Sprin中Bean的順序使用及說(shuō)明

    Sprin中Bean的順序使用及說(shuō)明

    這篇文章主要介紹了Sprin中Bean的順序使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 一文帶你掌握J(rèn)ava?SPI的原理和實(shí)踐

    一文帶你掌握J(rèn)ava?SPI的原理和實(shí)踐

    在Java中,我們經(jīng)常會(huì)提到面向接口編程,這樣減少了模塊之間的耦合,更加靈活,Java?SPI?(Service?Provider?Interface)就提供了這樣的機(jī)制,本文就來(lái)講講它的原理與具體使用吧
    2023-05-05

最新評(píng)論

象州县| 富阳市| 乾安县| 瑞昌市| 射洪县| 汨罗市| 上蔡县| 廊坊市| 张家口市| 寻乌县| 启东市| 会泽县| 德化县| SHOW| 峡江县| 公安县| 双牌县| 宝坻区| 定远县| 蒲江县| 吴川市| 九龙县| 壶关县| 大宁县| 华宁县| 湖南省| 潼关县| 彭山县| 安乡县| 三门县| 延吉市| 克东县| 大邑县| 灵武市| 富民县| 即墨市| 武强县| 乌拉特后旗| 辽阳市| 忻城县| 永平县|