應(yīng)用的開發(fā)步驟,Java數(shù)據(jù)庫編程教程

應(yīng)用的開發(fā)步驟,Java數(shù)據(jù)庫編程教程

長沙牛耳教育      2022-04-06 21:56:01     8

應(yīng)用的開發(fā)步驟,Java數(shù)據(jù)庫編程教程,  數(shù)據(jù)庫選型  首先,我們第一個(gè)想到的問題就是我們的數(shù)據(jù)要存在什么地方?  你可能會(huì)說,當(dāng)然是硬盤上啊。這樣回答也沒有

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹


  數(shù)據(jù)庫選型


  首先,我們第一個(gè)想到的問題就是我們的數(shù)據(jù)要存在什么地方?


  你可能會(huì)說,當(dāng)然是硬盤上啊。這樣回答也沒有錯(cuò),硬盤的確是當(dāng)下主要的存儲(chǔ)介質(zhì),不管是機(jī)械硬盤、固態(tài)硬盤、磁盤陣列。


  然而,我們?nèi)绻苯泳幊滩僮鞔鎯?chǔ)介質(zhì)那就太費(fèi)勁了,于是人們發(fā)明了文件系統(tǒng)(也可以說是一種數(shù)據(jù)庫管理系統(tǒng))、數(shù)據(jù)庫管理系統(tǒng)(可能是基于文件系統(tǒng)的),它們都提供相應(yīng)的編程接口(即API),這樣就能減輕數(shù)據(jù)庫應(yīng)用的編程負(fù)擔(dān)。


  但是,就目前來說,數(shù)據(jù)庫分很多種,文件系統(tǒng)、關(guān)系數(shù)據(jù)庫、NoSQL數(shù)據(jù)庫等等,而每一種類又有很多具體的數(shù)據(jù)庫產(chǎn)品,比如關(guān)系數(shù)據(jù)庫就有Oracle、MySQL等等。我們到底要選擇哪一種的哪一款產(chǎn)品呢?


  嗯,這就是數(shù)據(jù)庫選型的問題。它取決于下面的幾個(gè)因素:


  數(shù)據(jù)本身的特點(diǎn),比如數(shù)據(jù)從哪產(chǎn)生的、產(chǎn)生的頻率多大、產(chǎn)生的數(shù)據(jù)是什么內(nèi)容,比如數(shù)字、文本、圖片、視頻、音頻、地理位置等;有的數(shù)據(jù)可以描述一個(gè)個(gè)現(xiàn)實(shí)的實(shí)體對(duì)象,有的數(shù)據(jù)描述的是實(shí)體對(duì)象的行為或者實(shí)體對(duì)象之間的關(guān)系;有的數(shù)據(jù)可以形成流,有的數(shù)據(jù)可以形成樹、圖等結(jié)構(gòu)。結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化這三個(gè)概念也是描述數(shù)據(jù)本身的特點(diǎn)的。事實(shí)上,結(jié)構(gòu)化數(shù)據(jù)基本上可以等同于關(guān)系數(shù)據(jù),即可以提煉出表及其各個(gè)列(即實(shí)體及其各個(gè)屬性)。


  人們使用數(shù)據(jù)的特點(diǎn),是一次寫入數(shù)據(jù)后以后只讀不再更新,還是需要不斷更新該數(shù)據(jù),新增數(shù)據(jù)的頻率是多大,更新數(shù)據(jù)的頻率是多大,每次讀取、新增、更新的數(shù)據(jù)量是多少,數(shù)據(jù)的讀寫分布在某個(gè)局部范圍還是均勻分布,是單條處理居多還是批量處理居多,訪問聚合數(shù)據(jù)居多還是獨(dú)立數(shù)據(jù)居多,是每個(gè)數(shù)據(jù)操作獨(dú)立還是往往多個(gè)數(shù)據(jù)操作是一個(gè)整體,是同一個(gè)數(shù)據(jù)多個(gè)用戶需要訪問還是基本上一個(gè)數(shù)據(jù)就一個(gè)用戶訪問等等。


  數(shù)據(jù)庫產(chǎn)品本身的許可類型(License)、價(jià)格、特性、性能、穩(wěn)定性、部署是否容易、擴(kuò)容成本、運(yùn)維成本等。


  租房網(wǎng)應(yīng)用的數(shù)據(jù)庫選型


  目前租房網(wǎng)應(yīng)用的數(shù)據(jù)主要有兩個(gè),一個(gè)是用戶數(shù)據(jù),一個(gè)是房源數(shù)據(jù)。用戶數(shù)據(jù)主要是通過用戶注冊添加的,但目前租房網(wǎng)應(yīng)用并沒有這個(gè)功能。房源數(shù)據(jù)也是用戶發(fā)布而添加的,租房網(wǎng)應(yīng)用同樣還沒有這個(gè)功能。


  很明顯,用戶和房源很容易映射到現(xiàn)實(shí)中的實(shí)體,一個(gè)用戶具有用戶名和密碼等屬性,一個(gè)房源具有位置、房主、其他具體情況等靜態(tài)信息(事實(shí)上,這些應(yīng)該算是房產(chǎn)的屬性,房產(chǎn)只有在需要出租出去的時(shí)候才成為房源,房源應(yīng)該是房產(chǎn)的其中某種狀態(tài),但我們先不用搞這么復(fù)雜,就先這么統(tǒng)一對(duì)待吧),以及發(fā)布時(shí)間、發(fā)布者等動(dòng)態(tài)/行為信息。


  它們都是用戶通過瀏覽器添加到我們的數(shù)據(jù)庫中的,數(shù)據(jù)量應(yīng)該也不會(huì)太大。后續(xù)的數(shù)據(jù)訪問也主要是以讀操作為主,短時(shí)間內(nèi)訪問量也不會(huì)太大。當(dāng)然這個(gè)跟你對(duì)應(yīng)用的定位有關(guān),你如果希望應(yīng)用迅速火爆起來,必然要實(shí)施各種營銷和推廣措施,這樣的話短時(shí)間內(nèi)數(shù)據(jù)量和訪問量可能快速增長。


  既然如此,我們完全可以采用關(guān)系數(shù)據(jù)庫來解決數(shù)據(jù)的持久化問題。事實(shí)上,大多數(shù)Web應(yīng)用都可以采用關(guān)系數(shù)據(jù)庫,或者至少先拿關(guān)系數(shù)據(jù)庫來嘗試一下,那些所謂的大數(shù)據(jù)只存在于少數(shù)巨頭互聯(lián)網(wǎng)公司。


  另外,開發(fā)環(huán)境和測試環(huán)境、生產(chǎn)環(huán)境的數(shù)據(jù)庫應(yīng)該不一樣。在開發(fā)環(huán)境,我們最好選擇不需要單獨(dú)部署數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)庫產(chǎn)品,否則,開發(fā)受限太多,既要部署數(shù)據(jù)庫服務(wù)器,還受網(wǎng)絡(luò)情況等影響,單元測試也不容易做。


  測試環(huán)境和生產(chǎn)環(huán)境的數(shù)據(jù)庫應(yīng)該選擇同款數(shù)據(jù)庫才對(duì)。


  所以,在租房網(wǎng)應(yīng)用的開發(fā)環(huán)境中,我選擇的是H2Database(可以參考這篇文章),直接在工程中添加它的一個(gè)JAR包即可。至于測試環(huán)境和生產(chǎn)環(huán)境,那就不作考慮了,畢竟它只是用來演示的,又不是真的要上線運(yùn)營。


  數(shù)據(jù)庫設(shè)計(jì)


  選定好了數(shù)據(jù)庫,我們需要根據(jù)該數(shù)據(jù)庫產(chǎn)品進(jìn)行設(shè)計(jì)。


  簡單來說,對(duì)于關(guān)系數(shù)據(jù)庫,我們就是要設(shè)計(jì)數(shù)據(jù)庫中存在哪些表,每張表的各個(gè)列是什么,每個(gè)列的數(shù)據(jù)類型和約束是什么,是否要建立索引等等。


  但事實(shí)上,要想進(jìn)行數(shù)據(jù)庫設(shè)計(jì),一般先要對(duì)我們的業(yè)務(wù)、數(shù)據(jù)進(jìn)行分析,實(shí)際上也屬于需求分析的范疇。分析的方法也有很多,大家可以自行查閱相關(guān)資料。


  當(dāng)然,關(guān)系數(shù)據(jù)庫的設(shè)計(jì)形成了比較系統(tǒng)的理論,什么關(guān)系模型、關(guān)系代數(shù)、關(guān)系演算、三范式、完整性約束等等,這里就不再贅述了。


  當(dāng)然,數(shù)據(jù)庫設(shè)計(jì)可以采用文檔工具記錄下來,也可以采用所選定的數(shù)據(jù)庫管理系統(tǒng)直接設(shè)計(jì),也可以采用專業(yè)的第三方產(chǎn)品比如PowerDesigner等。


  而設(shè)計(jì)也會(huì)有相應(yīng)的方法論、理論、原則、規(guī)范等,這個(gè)也需要經(jīng)過學(xué)習(xí)、實(shí)踐、思考、總結(jié)等成長四步而沉淀到個(gè)人的,這里也不再贅述了。


  一句話,方法論和工具都很重要。


  租房網(wǎng)的數(shù)據(jù)庫設(shè)計(jì)


  至于我們的租房網(wǎng),我們就繼續(xù)采用簡單、夠用為原則,目前涉及到的數(shù)據(jù)就是用戶數(shù)據(jù)和房源數(shù)據(jù),那就設(shè)計(jì)用戶表和房源表。


  用戶表設(shè)計(jì)三個(gè)列,一列是用戶ID,一旦生成就不再變;一列是用戶名;一列是密碼。三個(gè)列都是字符串類型,但長度可以限制在某個(gè)固定長度,表的主鍵就是用戶ID。實(shí)際上密碼不能明文存儲(chǔ)到數(shù)據(jù)庫中,而是需要加密存儲(chǔ)。


  房源表也設(shè)計(jì)三個(gè)列吧,分別是房源ID、房源名稱、房源詳情,也都是字符串類型,但房源詳情可以采用變長字符串,長度可以大一些,200、500都可以,但也不可過大,表的主鍵是房源ID。


  這都是粗略的設(shè)計(jì),僅用作演示我們開發(fā)基于數(shù)據(jù)庫的應(yīng)用是需要這么一步的,并不符合現(xiàn)實(shí)的需求,如果有需要,后面可以改進(jìn)以符合現(xiàn)實(shí)的需求。


  在測試環(huán)境和生產(chǎn)環(huán)境中,往往需要由數(shù)據(jù)庫管理員(即DBA)來建立數(shù)據(jù)庫、數(shù)據(jù)表,分配相應(yīng)的權(quán)限,包括數(shù)據(jù)庫用戶名和密碼,甚至是部署獨(dú)立的數(shù)據(jù)庫服務(wù)器。


  在開發(fā)環(huán)境中,一般是采用嵌入式的數(shù)據(jù)庫,建庫、建表、添加測試數(shù)據(jù)等都是自己執(zhí)行SQL腳本或編程來實(shí)現(xiàn)。


  編寫訪問數(shù)據(jù)庫的代碼


  這一步往往依賴于某個(gè)庫。


  在Java中,JDBC是最常用的數(shù)據(jù)庫訪問API,而它僅僅是個(gè)接口規(guī)范,實(shí)際上還需要具體某個(gè)支持JDBC的數(shù)據(jù)庫產(chǎn)品提供的驅(qū)動(dòng)包,它本質(zhì)上就包含JDBC各個(gè)接口的實(shí)現(xiàn)類。


  還記得這篇文章中提到的接口的作用和使用模式嗎?



  JDBC基本上也是遵從這種方式,上面的某個(gè)接口可以替換成JDBC中的某個(gè)接口,底下的實(shí)現(xiàn)類就是各個(gè)數(shù)據(jù)庫廠商提供的驅(qū)動(dòng)里面相應(yīng)于該接口的某個(gè)實(shí)現(xiàn)類,上面使用該接口的外部程序就是我們的Web應(yīng)用程序了,它僅僅使用JDBC接口而已,但實(shí)際運(yùn)行時(shí)需要配置一個(gè)具體的數(shù)據(jù)庫驅(qū)動(dòng)(即JDBC的實(shí)現(xiàn)),這其實(shí)就是數(shù)據(jù)庫驅(qū)動(dòng)加載,后面再詳細(xì)介紹。


  當(dāng)然,直接使用JDBC可能比較復(fù)雜,于是很多第三方廠商又將JDBC進(jìn)行了封裝,比如Spring就提供了JDBCTemplate來簡化JDBC的操作,還有很多ORM(ObjectRelationalMapping,簡稱ORM,對(duì)象關(guān)系映射)框架也提供了某個(gè)方面的封裝,這些以后再詳細(xì)介紹。


  數(shù)據(jù)庫相關(guān)視頻教程


  oracle數(shù)據(jù)庫教程:http://www.bjpowernode.com/v22/


  數(shù)據(jù)庫plsql教程:http://www.bjpowernode.com/v23/


  jdbc數(shù)據(jù)庫教程:http://www.bjpowernode.com/v24/


  數(shù)據(jù)庫mysql教程:http://www.bjpowernode.com/v21


  Java實(shí)戰(zhàn)項(xiàng)目視頻之egov項(xiàng)目視頻教程【免費(fèi)下載】:http://www.bjpowernode.com/v83/


  Java學(xué)生成績管理系統(tǒng)視頻教程【免費(fèi)下載】:http://www.bjpowernode.com/v51/


       以上就是長沙牛耳教育Java培訓(xùn)機(jī)構(gòu)小編介紹的“應(yīng)用的開發(fā)步驟,Java數(shù)據(jù)庫編程教程”的內(nèi)容,希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。


Java編程教程

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。