• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于ORM技術(shù)的面向?qū)ο髷?shù)據(jù)與關(guān)系型數(shù)據(jù)交互問題的研究

    2017-04-26 21:19:07張磊
    電腦知識(shí)與技術(shù) 2017年6期
    關(guān)鍵詞:應(yīng)用

    張磊

    摘要:隨著計(jì)算機(jī)技術(shù)的發(fā)展,在應(yīng)用領(lǐng)域,越愛越多的應(yīng)用技術(shù)要接觸到大數(shù)據(jù),在PB級(jí)數(shù)據(jù)面前,傳統(tǒng)關(guān)系型數(shù)據(jù)庫的問題逐漸凸顯出來。隨著而來的面向?qū)ο髷?shù)據(jù)庫應(yīng)運(yùn)而生。針對(duì)面向?qū)ο髷?shù)據(jù)與關(guān)系型數(shù)據(jù)之間的信息交互問題,該文分析了如何利用ORM技術(shù)實(shí)現(xiàn)面向?qū)ο髷?shù)據(jù)與關(guān)系型數(shù)據(jù)之間的信息交互,并舉例說明。

    關(guān)鍵詞:面向?qū)ο髷?shù)據(jù);ORM;關(guān)系型數(shù)據(jù);應(yīng)用

    中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)06-0144-02

    1 概述

    隨著計(jì)算機(jī)技術(shù)的發(fā)展,在應(yīng)用領(lǐng)域,越來越多的應(yīng)用技術(shù)要接觸到大數(shù)據(jù)。在PB級(jí)數(shù)據(jù)的面前,傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的問題越來越多地被暴露了出來。效率低下、可擴(kuò)展性差、使用復(fù)雜以及與當(dāng)下流行的面向?qū)ο蠹夹g(shù)不適應(yīng)等等問題。

    在大數(shù)據(jù)時(shí)代下,面向?qū)ο髷?shù)據(jù)庫得到了廣泛的應(yīng)用。面向?qū)ο髷?shù)據(jù)庫與生俱來就與當(dāng)下流程面向?qū)ο蠹夹g(shù)相輔相成,在設(shè)計(jì)之初,就已經(jīng)考慮到大數(shù)據(jù)所帶來的性能消耗問題。所以在大數(shù)據(jù)面前,面向?qū)ο髷?shù)據(jù)庫具有較大的優(yōu)勢(shì)。[1]

    但是由于傳統(tǒng)關(guān)系型數(shù)據(jù)庫在過去很長(zhǎng)的一段時(shí)間當(dāng)中,都占領(lǐng)了數(shù)據(jù)庫市場(chǎng)的絕大部分份額。即使在當(dāng)下大數(shù)據(jù)時(shí)代,市面上大部分系統(tǒng)所用的數(shù)據(jù)庫也都為關(guān)系型數(shù)據(jù)庫。比如Oracle、SQL Server、MySQL、DB2等傳統(tǒng)關(guān)系型數(shù)據(jù)庫。由于新老數(shù)據(jù)技術(shù)的交替所帶來的問題也就油然而生,最主要的問題之一就是傳統(tǒng)關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)與面向?qū)ο笮蛿?shù)據(jù)庫的數(shù)據(jù)之間的交互問題。[2]這個(gè)問題是一個(gè)另廣大開發(fā)人員頭痛的問題,由于每個(gè)系統(tǒng)的業(yè)務(wù)邏輯不同,沒有一個(gè)通用的解決方案,所以一般關(guān)系型數(shù)據(jù)與面向?qū)ο髷?shù)據(jù)進(jìn)行數(shù)據(jù)交互都是特定問題特定分析。這種解決方式不僅僅適用于單獨(dú)系統(tǒng),不具備通用性,而且更多的是為企業(yè)帶來開發(fā)成本提高,開發(fā)效率下降等現(xiàn)實(shí)問題。

    2 面向?qū)ο笮蛿?shù)據(jù)庫與關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)的特點(diǎn)

    面向?qū)ο笮蛿?shù)據(jù)庫是基于面向?qū)ο蠹夹g(shù)發(fā)展起來的,面向?qū)ο蠹夹g(shù)的核心觀點(diǎn)是“世間萬物皆為對(duì)象”,其中對(duì)象是一個(gè)核心概念,任何一個(gè)事物都被認(rèn)為是一個(gè)對(duì)象而存在,比如桌子是一個(gè)對(duì)象,它存在材質(zhì)、大小、顏色、價(jià)格等屬性,可以用于書寫、吃飯、游戲等方法,多個(gè)桌子即可以表示為桌子對(duì)象數(shù)組。將同一類具有相同的屬性和方法的事物用類的方式封裝起來,在面向?qū)ο蠹夹g(shù)中,類還可以被繼承,利用繼承的方式實(shí)現(xiàn)對(duì)象屬性和方法的重用,模擬現(xiàn)實(shí)世界中復(fù)雜的事物行為。這種設(shè)計(jì)方式最顯著的特點(diǎn)就是事物與事物之間的關(guān)聯(lián)性最大程度的降低,即低耦合,事物間的關(guān)聯(lián)性降低,數(shù)據(jù)與代碼之間的關(guān)聯(lián)性降低對(duì)于存儲(chǔ)而言更加輕松方便。面向?qū)ο笮蛿?shù)據(jù)庫就是將這些事物以對(duì)象的形式存起來,所以面向?qū)ο笮蛿?shù)據(jù)庫的存儲(chǔ)基本單元可以認(rèn)為是對(duì)象。

    而關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)是傳統(tǒng)的矩陣的形式即行與列,但是現(xiàn)實(shí)世界的事物很難全部都用簡(jiǎn)單的行與列來表示。即使表示出來,也是用了非常復(fù)雜的數(shù)據(jù)結(jié)構(gòu)進(jìn)行表示。[3]比如表與表之間的具有多對(duì)多、一對(duì)一、一對(duì)多等多種情況,這種復(fù)雜的表示方式帶來的問題就是難以解析,尤其在大數(shù)據(jù)面前,即使每條數(shù)據(jù)的解析時(shí)間相差毫秒級(jí),在PB級(jí)的數(shù)據(jù)面前性能消耗也是開發(fā)人員承擔(dān)不起的。

    3 利用ORM技術(shù)實(shí)現(xiàn)對(duì)象化數(shù)據(jù)與關(guān)系型數(shù)據(jù)之間的交互應(yīng)用

    ORM(Object Relation Mapping),即對(duì)象關(guān)系映射,是用來把對(duì)象模型表示的對(duì)象映射到基于SQL的關(guān)系模型數(shù)據(jù)結(jié)構(gòu)當(dāng)中。這種技術(shù)可以讓開發(fā)人員只關(guān)心對(duì)象即可,不需要操作復(fù)雜的SQL語句。相反的,將利用SQL語句從關(guān)系型數(shù)據(jù)庫當(dāng)中取出來的數(shù)據(jù)轉(zhuǎn)變?yōu)閷?duì)象,開發(fā)人員也是可以直接利用對(duì)象來進(jìn)行業(yè)務(wù)層的業(yè)務(wù)邏輯運(yùn)算即可。

    以關(guān)系型數(shù)據(jù)表1為例:

    books表為圖書表,表中有如下字段,bookid書序列、title書名、isbn、author作者、unitprice單價(jià)、ctgcode書類別。非常簡(jiǎn)單的一種關(guān)系型數(shù)據(jù)表結(jié)構(gòu)。在面向?qū)ο蟮氖澜缰?,可以將books表定義為books對(duì)象,其中有bookid、title、isbn、author、unitprice、ctgcode屬性以及相應(yīng)的get、set方法。建立books對(duì)象代碼如下:

    publicclass Books {

    private Long bookid;

    private String title;

    private String isbn;

    private String author;

    private Double unitprice;

    private String ctgcode;

    public Long getBookid() {

    returnbookid;}

    publicvoid setBookid(Long bookid) {

    this.bookid = bookid;}

    public String getTitle() {

    returntitle;}

    publicvoid setTitle(String title) {

    this.title = title;}

    public String getIsbn() {

    returnisbn;}

    publicvoid setIsbn(String isbn) {

    this.isbn = isbn;}

    public String getAuthor() {

    returnauthor;}

    publicvoid setAuthor(String author) {

    this.author = author;}

    public Double getUnitprice() {

    returnunitprice;}

    publicvoid setUnitprice(Double unitprice) {

    this.unitprice = unitprice;}

    public String getCtgcode() {

    returnctgcode;}

    publicvoid setCtgcode(String ctgcode) {

    this.ctgcode = ctgcode;}}

    以關(guān)系型數(shù)據(jù)庫MySQL為例,將books表中的關(guān)系型數(shù)據(jù)轉(zhuǎn)換為Books對(duì)象。其代碼如下:

    Listlist=new ArrayList();

    try {

    Class.forName("com.mysql.jdbc.Driver");

    String url = "jdbc:mysql://localhost:3306/booksale?user=root&password=111111&useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false";

    Connection con = DriverManager.getConnection(url);

    Statement stmt = con.createStatement();

    String query = "select * from books";

    ResultSet rs = stmt.executeQuery(query);

    while (rs.next()) {

    Books book=new Books();

    Long bookid = rs.getLong("bookid");

    book.setBookid(bookid);

    String title = rs.getString("title");

    book.setTitle(title);

    String isbn = rs.getString("isbn");

    book.setIsbn(isbn);

    String author = rs.getString("author");

    book.setAuthor(author);

    Double unitprice = rs.getDouble("unitprice");

    book.setUnitprice(unitprice);

    String ctgcode = rs.getString("ctgcode");

    book.setCtgcode(ctgcode);

    list.add(book);}

    } catch (Exception e) {

    e.printStackTrace();}

    利用Java的JDBC技術(shù)連接MySQL數(shù)據(jù)庫,取出books表的數(shù)據(jù),將字段值通過set方法放到Books對(duì)象中。由于一張表中一般不可能只有一條數(shù)據(jù),但是在面向?qū)ο螽?dāng)中Books對(duì)象只代表一個(gè)對(duì)象,對(duì)應(yīng)到數(shù)據(jù)庫當(dāng)中即一條數(shù)據(jù)。所以在程序中加入List數(shù)組,數(shù)組里的元素是Books對(duì)象。

    4 結(jié)論

    基于ORM技術(shù)的面向?qū)ο髷?shù)據(jù)與關(guān)系型數(shù)據(jù)之間的信息交互問題,在實(shí)際應(yīng)用中,往往不會(huì)如此簡(jiǎn)單,由于數(shù)據(jù)交互的信息量比較大。一般在開發(fā)當(dāng)中,代碼在編寫時(shí)都是以數(shù)據(jù)庫字段未知,對(duì)象屬性未知的情況下編寫。這種編寫方式才可以使代碼更加通用,相應(yīng)的數(shù)據(jù)庫字段,對(duì)象屬性等信息通過XML配置文件或者是注解標(biāo)記等方式告知程序。在Java代碼中會(huì)以反射技術(shù)去開發(fā)這方面代碼,比如當(dāng)下比較流行的Hibernate,MyBatis等框架都是基于此開發(fā)的。

    參考文獻(xiàn):

    [1] 柴晟. 數(shù)據(jù)庫技術(shù)發(fā)展的新方向——面向?qū)ο蟮臄?shù)據(jù)庫系統(tǒng)[J].成都航空職業(yè)技術(shù)學(xué)院學(xué)報(bào),2013(4).

    [2] 楊玉芬.李明明.高曉旸.對(duì)象管理在面向?qū)ο髷?shù)據(jù)庫中的應(yīng)用研究[J].吉林大學(xué)學(xué)報(bào),2013(9).

    [3] 應(yīng)建. 面向?qū)ο蟮臄?shù)據(jù)庫技術(shù)研究[J].電腦知識(shí)與技術(shù),2011(6).

    猜你喜歡
    應(yīng)用
    配網(wǎng)自動(dòng)化技術(shù)的應(yīng)用探討
    科技視界(2016年21期)2016-10-17 19:54:47
    帶壓堵漏技術(shù)在檢修中的應(yīng)用
    科技視界(2016年21期)2016-10-17 19:54:05
    行列式的性質(zhì)及若干應(yīng)用
    科技視界(2016年21期)2016-10-17 18:46:46
    癌癥擴(kuò)散和治療研究中的微分方程模型
    科技視界(2016年21期)2016-10-17 18:37:58
    紅外線測(cè)溫儀在汽車診斷中的應(yīng)用
    科技視界(2016年21期)2016-10-17 18:28:05
    多媒體技術(shù)在小學(xué)語文教學(xué)中的應(yīng)用研究
    考試周刊(2016年76期)2016-10-09 08:45:44
    微課的翻轉(zhuǎn)課堂在英語教學(xué)中的應(yīng)用研究
    分析膜技術(shù)及其在電廠水處理中的應(yīng)用
    科技視界(2016年20期)2016-09-29 14:22:00
    GM(1,1)白化微分優(yōu)化方程預(yù)測(cè)模型建模過程應(yīng)用分析
    科技視界(2016年20期)2016-09-29 12:03:12
    煤礦井下坑道鉆機(jī)人機(jī)工程學(xué)應(yīng)用分析
    科技視界(2016年20期)2016-09-29 11:47:01
    醴陵市| 五指山市| 阆中市| 太仆寺旗| 清远市| 武功县| 石棉县| 互助| 安仁县| 旅游| 兴仁县| 安国市| 江西省| 集安市| 崇明县| 北宁市| 洛宁县| 化德县| 大庆市| 武宣县| 卢湾区| 大宁县| 田林县| 北京市| 贵港市| 唐海县| 那曲县| 铁岭县| 涟源市| 浪卡子县| 扬州市| 阿合奇县| 邯郸市| 仲巴县| 岗巴县| 兴安盟| 通化县| 玉龙| 丹寨县| 岑巩县| 金华市|