本發(fā)明涉及軟件開發(fā)領(lǐng)域,更具體地,涉及一種基于orm框架的數(shù)據(jù)庫(kù)開發(fā)方法及裝置。
背景技術(shù):
數(shù)據(jù)庫(kù)(database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),它產(chǎn)生于距今六十多年前,隨著信息技術(shù)和市場(chǎng)的發(fā)展,特別是二十世紀(jì)九十年代以后,數(shù)據(jù)管理不再僅僅是存儲(chǔ)和管理數(shù)據(jù),而轉(zhuǎn)變成用戶所需要的各種數(shù)據(jù)管理的方式。數(shù)據(jù)庫(kù)有很多種類型,從最簡(jiǎn)單的存儲(chǔ)有各種數(shù)據(jù)的表格到能夠進(jìn)行海量數(shù)據(jù)存儲(chǔ)的大型數(shù)據(jù)庫(kù)系統(tǒng)都在各個(gè)方面得到了廣泛的應(yīng)用。
在信息化社會(huì),充分有效地管理和利用各類信息資源,是進(jìn)行科學(xué)研究和決策管理的前提條件。數(shù)據(jù)庫(kù)技術(shù)是管理信息系統(tǒng)、辦公自動(dòng)化系統(tǒng)、決策支持系統(tǒng)等各類信息系統(tǒng)的核心部分,是進(jìn)行科學(xué)研究和決策管理的重要技術(shù)手段。
sqlite是遵守acid的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它能夠支持windows/linux/unix等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如tcl、c#、php、java等,還有odbc接口。
目前,很多android應(yīng)用也需要用到sqlite數(shù)據(jù)庫(kù)來存儲(chǔ)數(shù)據(jù)。一般來說,開發(fā)者必須自己創(chuàng)建數(shù)據(jù)庫(kù),然后創(chuàng)建數(shù)據(jù)庫(kù)表、表索引和增/刪/改/查數(shù)據(jù)等操作。并且如果需要繼續(xù)進(jìn)行多個(gè)數(shù)據(jù)庫(kù)表之間的一對(duì)多關(guān)聯(lián),則需要更多的增/刪/改/查操作,就必須自己寫很多sql語(yǔ)句,還需要做java變量到數(shù)據(jù)庫(kù)記錄之間的相互轉(zhuǎn)換等等,大大增加了編碼的復(fù)雜度。
因此,需要一種更簡(jiǎn)單高效的android應(yīng)用中的數(shù)據(jù)庫(kù)的開發(fā)方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種克服上述問題或者至少部分地解決上述問題的基于orm框架的數(shù)據(jù)庫(kù)開發(fā)方法及裝置。
根據(jù)本發(fā)明的一個(gè)方面,提供一種基于orm框架的數(shù)據(jù)庫(kù)開發(fā)方法,包括:
s1,基于orm框架的模板文件格式,在指定程序工程中添加第一類模板文件和至少一個(gè)第二類模板文件;
所述第一類模板文件,用于創(chuàng)建數(shù)據(jù)庫(kù),并生成所有數(shù)據(jù)庫(kù)表;所述第二類模板文件,用于對(duì)單個(gè)數(shù)據(jù)庫(kù)表進(jìn)行初始化和刪除操作;
s2,在應(yīng)用程序工程中引用所述指定程序工程,利用所述orm框架自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼;
s3,利用所述數(shù)據(jù)庫(kù)程序代碼中的數(shù)據(jù)庫(kù)對(duì)象創(chuàng)建數(shù)據(jù)庫(kù),生成所有數(shù)據(jù)庫(kù)表并執(zhí)行每個(gè)數(shù)據(jù)庫(kù)表的初始化操作。
進(jìn)一步,所述s1還包括:
在所述指定程序工程中添加第三類模板文件和至少一個(gè)第四類模板文件;
所述第三類模板文件,用于提供對(duì)數(shù)據(jù)庫(kù)表中的記錄進(jìn)行增加、刪除、修改和查詢操作的模板;
所述第四類模板文件,用于以所述第三類模板文件為基模板,對(duì)單個(gè)數(shù)據(jù)庫(kù)表中的記錄進(jìn)行增加、刪除、修改和查詢操作。
進(jìn)一步,所述s1還包括:
基于orm框架的模板文件dao.ftl,在所述dao.ftl中添加屬性數(shù)組,所述屬性數(shù)組用于關(guān)聯(lián)數(shù)據(jù)庫(kù)表的任意字段對(duì)應(yīng)的屬性;
基于orm框架的模板文件entity.ftl,在所述entity.ftl中添加屬性設(shè)置方法,所述屬性設(shè)置方法用于設(shè)置數(shù)據(jù)庫(kù)表的字段的屬性。
進(jìn)一步,所述s2進(jìn)一步包括:
s2.1,在所述應(yīng)用程序工程中引用所述指定程序工程,基于所述第一類模板文件創(chuàng)建并初始化根模型類的對(duì)象;
s2.2,基于每個(gè)所述第二類模板文件的數(shù)據(jù)庫(kù)表的字段,一一對(duì)應(yīng)構(gòu)造數(shù)據(jù)庫(kù)表實(shí)體對(duì)象;
s2.3,將所述數(shù)據(jù)庫(kù)表實(shí)體對(duì)象添加到所述根模型類的對(duì)象;
s2.4,利用所述orm框架為所述根模型類的對(duì)象自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼。
進(jìn)一步,所述s2.3還包括:
基于所述數(shù)據(jù)庫(kù)表實(shí)體對(duì)象,利用所述orm框架的公共接口建立不同的數(shù)據(jù)庫(kù)表之間的關(guān)聯(lián)。
進(jìn)一步,所述s3還包括:
對(duì)于任意數(shù)據(jù)庫(kù)表,基于所述數(shù)據(jù)庫(kù)表實(shí)體對(duì)象的插入功能向所述數(shù)據(jù)庫(kù)表插入一條新記錄,基于所述數(shù)據(jù)庫(kù)表實(shí)體對(duì)象的刪除功能刪除所述數(shù)據(jù)庫(kù)表的一條記錄,所述數(shù)據(jù)庫(kù)表實(shí)體對(duì)象的更新功能向更新所述數(shù)據(jù)庫(kù)表中原有的記錄。
進(jìn)一步,所述s3還包括:
利用數(shù)據(jù)庫(kù)查詢生成器querybuuilder構(gòu)造查詢對(duì)象,用于對(duì)任意數(shù)據(jù)庫(kù)表進(jìn)行查詢。
根據(jù)本發(fā)明的一個(gè)方面,還提供一種基于orm框架的數(shù)據(jù)庫(kù)開發(fā)裝置,包括:
模板添加模塊,用于基于orm框架的模板文件格式,在指定程序工程中添加第一類模板文件和至少一個(gè)第二類模板文件;所述第一類模板文件,用于創(chuàng)建數(shù)據(jù)庫(kù),并生成所有數(shù)據(jù)庫(kù)表;所述第二類模板文件,用于對(duì)單個(gè)數(shù)據(jù)庫(kù)表進(jìn)行初始化和刪除操作;
自動(dòng)生成模塊,用于在應(yīng)用程序工程中引用所述指定程序工程,利用所述orm框架自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼;以及
數(shù)據(jù)庫(kù)生成模塊,用于利用所述數(shù)據(jù)庫(kù)程序代碼中的數(shù)據(jù)庫(kù)對(duì)象創(chuàng)建數(shù)據(jù)庫(kù),生成所有數(shù)據(jù)庫(kù)表并執(zhí)行每個(gè)數(shù)據(jù)庫(kù)表的初始化操作。
根據(jù)本發(fā)明的一個(gè)方面,還提供一種基于orm框架的數(shù)據(jù)庫(kù)開發(fā)設(shè)備,其特征在于,包括:
至少一個(gè)處理器;以及
與所述處理器通信連接的至少一個(gè)存儲(chǔ)器,其中:
所述存儲(chǔ)器存儲(chǔ)有可被所述處理器執(zhí)行的程序指令,所述處理器調(diào)用所述程序指令能夠執(zhí)行本發(fā)明所述一種基于orm框架的數(shù)據(jù)庫(kù)開發(fā)方法。
根據(jù)本發(fā)明的一個(gè)方面,還提供一種非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)計(jì)算機(jī)指令,所述計(jì)算機(jī)指令使所述計(jì)算機(jī)執(zhí)行本發(fā)明所述一種基于orm框架的數(shù)據(jù)庫(kù)開發(fā)方法。
本發(fā)明提出本發(fā)明所述一種基于orm框架的數(shù)據(jù)庫(kù)開發(fā)方法及裝置,在orm框架的基礎(chǔ)上,根據(jù)需要新增了數(shù)據(jù)庫(kù)模板文件及擴(kuò)展了原orm框架的模板文件,利用orm框架自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼;利用自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼可以快速實(shí)現(xiàn)數(shù)據(jù)庫(kù)的開發(fā),可以節(jié)約開發(fā)人員的工作量,大大提高了開發(fā)效率。
附圖說明
圖1為本發(fā)明實(shí)施例一種基于orm框架的數(shù)據(jù)庫(kù)開發(fā)方法流程示意圖;
圖2為本發(fā)明實(shí)施例orm框架自動(dòng)生成代碼流程示意圖;
圖3為本發(fā)明實(shí)施例一種基于orm框架的數(shù)據(jù)庫(kù)開發(fā)設(shè)備的結(jié)構(gòu)框圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。
對(duì)象-關(guān)系映射(object/relationmapping,簡(jiǎn)稱orm),是隨著面向?qū)ο蟮能浖_發(fā)方法發(fā)展而產(chǎn)生的。面向?qū)ο蟮拈_發(fā)方法是當(dāng)今企業(yè)級(jí)應(yīng)用開發(fā)環(huán)境中的主流開發(fā)方法,關(guān)系數(shù)據(jù)庫(kù)是企業(yè)級(jí)應(yīng)用環(huán)境中永久存放數(shù)據(jù)的主流數(shù)據(jù)存儲(chǔ)系統(tǒng)。對(duì)象和關(guān)系數(shù)據(jù)是業(yè)務(wù)實(shí)體的兩種表現(xiàn)形式,業(yè)務(wù)實(shí)體在內(nèi)存中表現(xiàn)為對(duì)象,在數(shù)據(jù)庫(kù)中表現(xiàn)為關(guān)系數(shù)據(jù)。內(nèi)存中的對(duì)象之間存在關(guān)聯(lián)和繼承關(guān)系,而在數(shù)據(jù)庫(kù)中,關(guān)系數(shù)據(jù)無(wú)法直接表達(dá)多對(duì)多關(guān)聯(lián)和繼承關(guān)系。因此,對(duì)象-關(guān)系映射(orm)系統(tǒng)一般以中間件的形式存在,主要實(shí)現(xiàn)程序?qū)ο蟮疥P(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)的映射。
orm方法論基于三個(gè)核心原則:
簡(jiǎn)單性:以最基本的形式建模數(shù)據(jù)。
傳達(dá)性:數(shù)據(jù)庫(kù)結(jié)構(gòu)被任何人都能理解的語(yǔ)言文檔化。
精確性:基于數(shù)據(jù)模型創(chuàng)建正確標(biāo)準(zhǔn)化了的結(jié)構(gòu)。
面向?qū)ο笫菑能浖こ袒驹瓌t(如耦合、聚合、封裝)的基礎(chǔ)上發(fā)展起來的,而關(guān)系數(shù)據(jù)庫(kù)則是從數(shù)學(xué)理論發(fā)展而來的,兩套理論存在顯著的區(qū)別。為了解決這個(gè)不匹配的現(xiàn)象,對(duì)象關(guān)系映射技術(shù)應(yīng)運(yùn)而生。o/r中字母o起源于“對(duì)象”(object),而r則來自于“關(guān)系”(relational)。幾乎所有的程序里面,都存在對(duì)象和關(guān)系數(shù)據(jù)庫(kù)。在業(yè)務(wù)邏輯層和用戶界面層中,我們是面向?qū)ο蟮?。?dāng)對(duì)象信息發(fā)生變化的時(shí)候,我們需要把對(duì)象的信息保存在關(guān)系數(shù)據(jù)庫(kù)中。
如果在android系統(tǒng)中能使用類似對(duì)象-關(guān)系映射的方法構(gòu)建sqlite數(shù)據(jù),將會(huì)大大簡(jiǎn)化android應(yīng)用開發(fā)中對(duì)于sqlite數(shù)據(jù)庫(kù)的操作,而讓開發(fā)人員只需要關(guān)注功能本身。因此本發(fā)明提供一種android系統(tǒng)的基于orm框架的數(shù)據(jù)庫(kù)開發(fā)方法及裝置。本發(fā)明將通過以下實(shí)施例來描述orm框架之greendao在android上的應(yīng)用和擴(kuò)展,其能根據(jù)需要擴(kuò)展自動(dòng)生成代碼模板,自動(dòng)生成sqlite數(shù)據(jù)庫(kù)增刪改查代碼,用java對(duì)象來代表數(shù)據(jù)庫(kù)中的一行,讓數(shù)據(jù)庫(kù)操作更加方便。
如圖1所示,一種基于orm框架的數(shù)據(jù)庫(kù)開發(fā)方法,包括:
s1,基于orm框架的模板文件格式,在指定程序工程中添加第一類模板文件和至少一個(gè)第二類模板文件;
所述第一類模板文件,用于創(chuàng)建數(shù)據(jù)庫(kù),并生成所有數(shù)據(jù)庫(kù)表;所述第二類模板文件,用于對(duì)單個(gè)數(shù)據(jù)庫(kù)表進(jìn)行初始化和刪除操作;
s2,在應(yīng)用程序工程中引用所述指定程序工程,利用所述orm框架自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼;
s3,利用所述數(shù)據(jù)庫(kù)程序代碼中的數(shù)據(jù)庫(kù)對(duì)象創(chuàng)建數(shù)據(jù)庫(kù),生成所有數(shù)據(jù)庫(kù)表并執(zhí)行每個(gè)數(shù)據(jù)庫(kù)表的初始化操作。
本實(shí)施例在orm框架的基礎(chǔ)上,根據(jù)需要新增了數(shù)據(jù)庫(kù)模板文件及擴(kuò)展了原orm框架的模板文件,利用orm框架自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼;利用自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼可以快速實(shí)現(xiàn)數(shù)據(jù)庫(kù)的開發(fā),可以節(jié)約開發(fā)人員的工作量,大大提高了開發(fā)效率。
其中,所述第一類模板文件整體上創(chuàng)建數(shù)據(jù)庫(kù);所述第二類模板文件是對(duì)單個(gè)數(shù)據(jù)庫(kù)的初始化及刪除操作,一個(gè)數(shù)據(jù)庫(kù)表對(duì)應(yīng)一個(gè)所述第二類模板文件,多個(gè)數(shù)據(jù)庫(kù)表對(duì)應(yīng)多個(gè)所述第二類模板文件。
所述指定程序工程為包含orm框架的模板文件的一個(gè)程序工程。
如圖2所示為本實(shí)施例android系統(tǒng)的基于orm框架自動(dòng)生成代碼流程,包括擴(kuò)展模板、java中自動(dòng)生成代碼、android中自動(dòng)生成代碼、編譯orm框架greendao核心庫(kù)和使用greendao核心庫(kù)進(jìn)行應(yīng)用等。在擴(kuò)展模板步驟中,本實(shí)施例具體新增了第一類模板文件和第二類模板文件,分別用于數(shù)據(jù)庫(kù)的創(chuàng)建和初始化;通過新增模板,大大簡(jiǎn)化了android應(yīng)用開發(fā)中對(duì)于sqlite數(shù)據(jù)庫(kù)的操作,而讓開發(fā)人員只需要關(guān)注功能本身。
在具體實(shí)施時(shí),所述指定程序工程為daogenerator,新增的所述第二類模板文件包括entity.ftl和entitydao.ftl,所述entity.ftl和entitydao.ftl屬于所述指定程序工程為daogenerator的文件。
所述entity.ftl文件一個(gè)示例如下:
所述entitydao.ftl文件一個(gè)示例如下:
在一個(gè)實(shí)施例中,所述s1還包括:
在所述指定程序工程中添加第三類模板文件和至少一個(gè)第四類模板文件;
所述第三類模板文件,用于提供對(duì)數(shù)據(jù)庫(kù)表中的記錄進(jìn)行增加、刪除、修改和查詢操作的模板;
所述第四類模板文件,用于以所述第三類模板文件為基模板,對(duì)單個(gè)數(shù)據(jù)庫(kù)表中的記錄進(jìn)行增加、刪除、修改和查詢操作。
本實(shí)施例中,所述s1在新增數(shù)據(jù)庫(kù)創(chuàng)建和初始化模板文件的基礎(chǔ)上,還進(jìn)一步添加了對(duì)數(shù)據(jù)庫(kù)表進(jìn)行增加、刪除、修改和查詢操作的模板;其中所述第三類模板文件為基模板文件,所述第四類模板文件是在基模板文件上派生的單個(gè)數(shù)據(jù)庫(kù)表的增加、刪除、修改和查詢操作的模板。一個(gè)數(shù)據(jù)庫(kù)表對(duì)應(yīng)一個(gè)所述第三類模板文件,多個(gè)數(shù)據(jù)庫(kù)表對(duì)應(yīng)多個(gè)所述第三類模板文件。
在一個(gè)實(shí)施例中,所述s1還包括:
基于orm框架的模板文件dao.ftl,在所述dao.ftl中添加屬性數(shù)組,所述屬性數(shù)組用于關(guān)聯(lián)數(shù)據(jù)庫(kù)表的任意字段對(duì)應(yīng)的屬性;
基于orm框架的模板文件entity.ftl,在所述entity.ftl中添加屬性設(shè)置方法,所述屬性設(shè)置方法用于設(shè)置數(shù)據(jù)庫(kù)表的字段的屬性。
本實(shí)施例中,所述s1在上述實(shí)施例的基礎(chǔ),進(jìn)一步對(duì)orm框架自帶的模板文件dao.ftl和entity.ftl進(jìn)行擴(kuò)展;增加屬性數(shù)組,在所述屬性數(shù)組中可以列出一個(gè)數(shù)據(jù)庫(kù)表的所有字段對(duì)應(yīng)的屬性;通過在entity.ftl中添加屬性設(shè)置方法,用于設(shè)置數(shù)據(jù)庫(kù)表的字段的屬性,這樣可以方便的進(jìn)行數(shù)據(jù)庫(kù)表的字段屬性的設(shè)置。
在具體實(shí)施時(shí),對(duì)所述dao.ftl的擴(kuò)展的一個(gè)示例如下:
在具體實(shí)施時(shí),對(duì)所述entity.ftl的擴(kuò)展的一個(gè)示例如下:
在一個(gè)實(shí)施例中,所述s2進(jìn)一步包括:
s2.1,在所述應(yīng)用程序工程中引用所述指定程序工程,基于所述第一類模板文件創(chuàng)建并初始化根模型類的對(duì)象;
s2.2,基于每個(gè)所述第二類模板文件的數(shù)據(jù)庫(kù)表的字段,一一對(duì)應(yīng)構(gòu)造數(shù)據(jù)庫(kù)表實(shí)體對(duì)象;
s2.3,將所述數(shù)據(jù)庫(kù)表實(shí)體對(duì)象添加到所述根模型類的對(duì)象;
s2.4,利用所述orm框架為所述根模型類的對(duì)象自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼。
在一個(gè)實(shí)施例中,所述s2.3還包括:
基于所述數(shù)據(jù)庫(kù)表實(shí)體對(duì)象,利用所述orm框架的公共接口建立不同的數(shù)據(jù)庫(kù)表之間的關(guān)聯(lián)。
在一個(gè)具體實(shí)現(xiàn)中,通過greendao的daoexamplegenerator工程為應(yīng)用程序自動(dòng)生成代碼,具體步驟包括:
在應(yīng)用工程daoexamplegenerator中引用前述實(shí)施例的關(guān)鍵庫(kù)daogenerator。daogenerator庫(kù)的作用就是提供一套自動(dòng)生成代碼的接口函數(shù)。
創(chuàng)建并初始化一個(gè)schema對(duì)象。schema對(duì)象就是一個(gè)根模型類,用戶可以添加若干個(gè)實(shí)體對(duì)象entity到這個(gè)根模型類,所述實(shí)體對(duì)象entity是指數(shù)據(jù)庫(kù)表實(shí)體對(duì)象。
根據(jù)每個(gè)數(shù)據(jù)庫(kù)表的字段,構(gòu)造所述數(shù)據(jù)庫(kù)表的實(shí)體對(duì)象entity。
還可以創(chuàng)建不同表之間的一對(duì)多的關(guān)聯(lián)關(guān)系。
把每個(gè)數(shù)據(jù)庫(kù)表的實(shí)體對(duì)象添加到schema對(duì)象。
調(diào)用daogenerator.generateall()函數(shù)就可以為這個(gè)schema對(duì)象自動(dòng)生成代碼。
一個(gè)具體的代碼示例如下:
接下來,編譯greendao的核心庫(kù)daocore,得到daocore.jar。daocore不需要做改動(dòng),直接編譯后即可使用。有了以上自動(dòng)生成的代碼,在android應(yīng)用代碼中,使用sqlite就變得相當(dāng)容易了。
下面以一個(gè)名為idrfaceguard的應(yīng)用工程為例介紹如何使用greendao。
創(chuàng)建數(shù)據(jù)庫(kù):dbman.init(mapp,mdb_name,mdb_key)。
查詢表:構(gòu)造一個(gè)querybuilder<tb_face_info>face_infoquerbuilder,直接調(diào)face_infoquerbuilder.list(),返回的是tb_face_info列表list<tb_face_info>。
插入一條記錄:準(zhǔn)備好tb_face_info對(duì)象face_info,再調(diào)用face_infoentitydao.insertentity(face_info)即可。
在一個(gè)實(shí)施例中,所述s3還包括:
對(duì)于任意數(shù)據(jù)庫(kù)表,基于所述數(shù)據(jù)庫(kù)表實(shí)體對(duì)象的插入功能向所述數(shù)據(jù)庫(kù)表插入一條新記錄,基于所述數(shù)據(jù)庫(kù)表實(shí)體對(duì)象的刪除功能刪除所述數(shù)據(jù)庫(kù)表的一條記錄,所述數(shù)據(jù)庫(kù)表實(shí)體對(duì)象的更新功能向更新所述數(shù)據(jù)庫(kù)表中原有的記錄。
在一個(gè)實(shí)施例中,所述s3還包括:
利用數(shù)據(jù)庫(kù)查詢生成器querybuuilder構(gòu)造查詢對(duì)象,用于對(duì)任意數(shù)據(jù)庫(kù)表進(jìn)行查詢。
本實(shí)施例中,以idrfaceguard為例介紹如何使用greendao。有了以上自動(dòng)生成的代碼,在android應(yīng)用代碼中,使用sqlite就變得相當(dāng)容易了,主要解決如下幾個(gè)問題:
怎么創(chuàng)建數(shù)據(jù)庫(kù)?使用自動(dòng)生成的第一類模板文件的根模型類對(duì)象創(chuàng)建數(shù)據(jù)庫(kù)。
怎么查詢記錄?構(gòu)造一個(gè)querybuilder對(duì)象來實(shí)現(xiàn)查詢數(shù)據(jù)庫(kù)的表的記錄。
怎么插入一條新記錄?調(diào)用函數(shù)xxxentitydao.insertentity()就可以插入一條記錄。其中xxx表示數(shù)據(jù)庫(kù)的表名。
怎么刪除一條記錄?調(diào)用函數(shù)xxxentitydao.deleteentity()就可以插入一條記錄。其中xxx表示數(shù)據(jù)庫(kù)的表名。
怎么更新一條記錄?調(diào)用函數(shù)xxx.update()就可以更新一條記錄。其中xxx表示一個(gè)數(shù)據(jù)庫(kù)表對(duì)應(yīng)的對(duì)象。
本發(fā)明還提供一種基于orm框架的數(shù)據(jù)庫(kù)開發(fā)裝置,包括:
模板添加模塊,用于基于orm框架的模板文件格式,在指定程序工程中添加第一類模板文件和至少一個(gè)第二類模板文件;所述第一類模板文件,用于創(chuàng)建數(shù)據(jù)庫(kù),并生成所有數(shù)據(jù)庫(kù)表;所述第二類模板文件,用于對(duì)單個(gè)數(shù)據(jù)庫(kù)表進(jìn)行初始化和刪除操作;
自動(dòng)生成模塊,用于在應(yīng)用程序工程中引用所述指定程序工程,利用所述orm框架自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼;以及
數(shù)據(jù)庫(kù)生成模塊,用于利用所述數(shù)據(jù)庫(kù)程序代碼中的數(shù)據(jù)庫(kù)對(duì)象創(chuàng)建數(shù)據(jù)庫(kù),生成所有數(shù)據(jù)庫(kù)表并執(zhí)行每個(gè)數(shù)據(jù)庫(kù)表的初始化操作。
本發(fā)明提出本發(fā)明所述一種基于orm框架的數(shù)據(jù)庫(kù)開發(fā)方法及裝置,在orm框架的基礎(chǔ)上,根據(jù)需要新增了數(shù)據(jù)庫(kù)模板文件及擴(kuò)展了原orm框架的模板文件,利用orm框架自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼;利用自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼可以快速實(shí)現(xiàn)數(shù)據(jù)庫(kù)的開發(fā),可以節(jié)約開發(fā)人員的工作量,大大提高了開發(fā)效率。具體有益效果包括:
1.讓程序員不再關(guān)注數(shù)據(jù)庫(kù)細(xì)節(jié),專心在業(yè)務(wù)邏輯上,程序員可以不懂?dāng)?shù)據(jù)庫(kù)就可以開發(fā)系統(tǒng)。
2.讓數(shù)據(jù)庫(kù)遷移變的非常方便,如果系統(tǒng)需要更改使用的數(shù)據(jù)庫(kù),直接改配制就好了,不要再管不同數(shù)據(jù)庫(kù)之間的語(yǔ)法差異。
3.省時(shí),可快速開發(fā),因?yàn)椴恍枰约簩憦?fù)雜的sql語(yǔ)句,不需要封裝復(fù)雜的數(shù)據(jù)底層,這樣可以節(jié)省很多時(shí)間。
圖3示出了本發(fā)明實(shí)施例基于orm框架的數(shù)據(jù)庫(kù)開發(fā)設(shè)備的結(jié)構(gòu)框圖。
參照?qǐng)D3,所述設(shè)備,包括:處理器(processor)601、存儲(chǔ)器(memory)602和總線603;
其中,
所述處理器601和存儲(chǔ)器602通過所述總線603完成相互間的通信;
所述處理器601用于調(diào)用所述存儲(chǔ)器602中的程序指令,以執(zhí)行上述各方法實(shí)施例所提供的方法,例如包括:基于orm框架的模板文件格式,在指定程序工程中添加第一類模板文件和第二類模板文件;所述第一類模板文件,用于創(chuàng)建數(shù)據(jù)庫(kù),并生成所有數(shù)據(jù)庫(kù)表;所述第二類模板文件,用于對(duì)單個(gè)數(shù)據(jù)庫(kù)表進(jìn)行初始化和刪除操作,包括至少一個(gè)第二類模板文件;在應(yīng)用程序工程中引用所述指定程序工程,利用所述orm框架自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼;利用所述數(shù)據(jù)庫(kù)程序代碼中的數(shù)據(jù)庫(kù)對(duì)象創(chuàng)建數(shù)據(jù)庫(kù),生成所有數(shù)據(jù)庫(kù)表并執(zhí)行每個(gè)數(shù)據(jù)庫(kù)表的初始化操作。
本發(fā)明另一實(shí)施例公開一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括存儲(chǔ)在非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包括程序指令,當(dāng)所述程序指令被計(jì)算機(jī)執(zhí)行時(shí),計(jì)算機(jī)能夠執(zhí)行上述各方法實(shí)施例所提供的方法,例如包括:基于orm框架的模板文件格式,在指定程序工程中添加第一類模板文件和第二類模板文件;所述第一類模板文件,用于創(chuàng)建數(shù)據(jù)庫(kù),并生成所有數(shù)據(jù)庫(kù)表;所述第二類模板文件,用于對(duì)單個(gè)數(shù)據(jù)庫(kù)表進(jìn)行初始化和刪除操作,包括至少一個(gè)第二類模板文件;在應(yīng)用程序工程中引用所述指定程序工程,利用所述orm框架自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼;利用所述數(shù)據(jù)庫(kù)程序代碼中的數(shù)據(jù)庫(kù)對(duì)象創(chuàng)建數(shù)據(jù)庫(kù),生成所有數(shù)據(jù)庫(kù)表并執(zhí)行每個(gè)數(shù)據(jù)庫(kù)表的初始化操作。
本發(fā)明另一實(shí)施例提供一種非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)計(jì)算機(jī)指令,所述計(jì)算機(jī)指令使所述計(jì)算機(jī)執(zhí)行上述各方法實(shí)施例所提供的方法,例如包括:基于orm框架的模板文件格式,在指定程序工程中添加第一類模板文件和第二類模板文件;所述第一類模板文件,用于創(chuàng)建數(shù)據(jù)庫(kù),并生成所有數(shù)據(jù)庫(kù)表;所述第二類模板文件,用于對(duì)單個(gè)數(shù)據(jù)庫(kù)表進(jìn)行初始化和刪除操作,包括至少一個(gè)第二類模板文件;在應(yīng)用程序工程中引用所述指定程序工程,利用所述orm框架自動(dòng)生成數(shù)據(jù)庫(kù)程序代碼;利用所述數(shù)據(jù)庫(kù)程序代碼中的數(shù)據(jù)庫(kù)對(duì)象創(chuàng)建數(shù)據(jù)庫(kù),生成所有數(shù)據(jù)庫(kù)表并執(zhí)行每個(gè)數(shù)據(jù)庫(kù)表的初始化操作。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所描述的基于orm框架的數(shù)據(jù)庫(kù)開發(fā)設(shè)備等實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
最后,本申請(qǐng)的方法僅為較佳的實(shí)施方案,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。