• 
    

    
    

      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
      荥经县| 内江市| 兴海县| 叶城县| 永平县| 策勒县| 西城区| 兴和县| 临沧市| 葫芦岛市| 鄂尔多斯市| 陇川县| 谢通门县| 水城县| 土默特左旗| 五常市| 平顶山市| 深州市| 留坝县| 宁南县| 颍上县| 诸城市| 宁陵县| 定远县| 遂宁市| 个旧市| 东乌珠穆沁旗| 石屏县| 嘉鱼县| 澎湖县| 桂阳县| 吉木乃县| 屏山县| 营口市| 彭州市| 黄石市| 青海省| 泽库县| 佛山市| 石渠县| 营山县|