国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java 數據對象(JDO)介紹(一)

2019-11-18 10:48:02
字體:
來源:轉載
供稿:網友

  介紹
  java 數據對象 (JDO) 是一個存儲Java對象的規范. 它已經被JCP組織定義成JSR12規范。JDO的第一個版本在2000年6月6日提交并在2002年4月30日正式發布1.0版本規范。
  規范的兩個主要目的是提供數據處理和訪問機制的API以及答應規范的實現作為應用服務器的一部分。
  
  JDO 和 JDBC
  JDBC和JDO都是Java調用數據庫的APIs。區別在于,他們訪問數據存儲的具體方法不同。JDBC提供了一種非常好的機制,它可以使應用程序代碼與具體的數據庫廠商和數據庫位置無關。在大多數情況下數據存儲使用的是關系數據庫。但是當使用JDBC驅動運行在一個非關系數據庫時就不是很好了。而對于JDO來說,運行在它之下的數據庫就可以是一個關系數據庫,面向對象的數據庫或者其他完全不同的數據庫。在JDO運行于關系數據庫之上時,它可以通過JDBC很好的完成數據存儲。而這一切對于開發人員來說都是透明的,所有實現都有JDO本身來完成。
  
  JDBC不支持面向對象的數據庫表示。JDBC數據庫表示完全圍繞關系數據庫模型。這經常導致書寫代碼時在應用程序和數據庫之間存在一個中間層。這個層的作用也許是分解Java對象。分解Java對象的過程會對使用的對象稍作改變,這樣對象才能存儲到關系數據庫之中。同樣的必須存在一種機制來把數據庫中的記錄轉換成適當的Java對象。JDO與JDBC剛好相反,他的數據庫標示完全面向對象。這種機制并不新奇,在一些面向對象數據庫中已經使用了這種機制。
  JDBC的查詢語言一般都是用SQL。JDO的查詢語言看起來與Java更接近。使用JDO無需再專門學習一種查詢語言比如SQL。假如你會用Java那么你就能夠使用JDO的查詢語言。
  
  JDO實現JDO規范定義了JDO實現的接口已經JDO實現的內容。SUN提供了一個JDO規范的參考實現,但是在2002年5月份發布的版本中它并沒有完全實現規范中所要求的內容。還有眾多的廠商提供的JDO實現可以使用。在下面的表格中列出了一部分。
  
  廠商 產品
  SolarMetric Kodo JDO
  Signsoft intelliBO
  Poet FastObjects
  
  API
  javax.jdo.spi.PersistenceCapable
  任何被JDO實現控制的類都必須擴展PersistenceCapable接口。任何擴展PersistenceCapable接口的類的實例都可以看作是一個“JDO實例”。這個接口定義了JDO實現使用的方法來控制類的實例。
  
  public abstract javax.jdo.PersistenceManager jdoGetPersistenceManager();
  public abstract void jdoReplaceStateManager(javax.jdo.spi.StateManager)
  throws SecurityException;
  public abstract void jdoPRovideField(int);
  public abstract void jdoProvideFields(int[]);
  public abstract void jdoReplaceField(int);
  public abstract void jdoReplaceFields(int[]);
  public abstract void jdoReplaceFlags();
  public abstract void jdoCopyFields(Object, int[]);
  public abstract void jdoMakeDirty(String);
  public abstract Object jdoGetObjectId();
  public abstract Object jdoGetTransactionalObjectId();
  public abstract boolean jdoIsDirty();
  public abstract boolean jdoIsTransactional();
  public abstract boolean jdoIsPersistent();
  public abstract boolean jdoIsNew();
  public abstract boolean jdoIsDeleted();
  public abstract javax.jdo.spi.PersistenceCapable
  jdoNewInstance(javax.jdo.spi.StateManager);
  public abstract javax.jdo.spi.PersistenceCapable
  jdoNewInstance(javax.jdo.spi.StateManager, Object);
  public abstract Object jdoNewObjectIdInstance();
  public abstract Object jdoNewObjectIdInstance(String);
  public abstract void jdoCopyKeyFieldsToObjectId(Object);
  public abstract void jdoCopyKeyFieldsToObjectId(
  javax.jdo.spi.PersistenceCapable.ObjectIdFieldSupplier, Object);
  public abstract void jdoCopyKeyFieldsFromObjectId(
  javax.jdo.spi.PersistenceCapable.ObjectIdFieldConsumer, Object);
  
  通常會有一個由JDO實現廠商提供的工具來完成普通的Java類到“JDO實例”類的轉化。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苏尼特右旗| 积石山| 临沂市| 长沙市| 库尔勒市| 辽阳市| 那坡县| 定兴县| 邹平县| 陆丰市| 台东市| 胶南市| 南雄市| 宁阳县| 长春市| 元谋县| 衢州市| 乌苏市| 咸阳市| 灵石县| 伊川县| 海原县| 随州市| 漳平市| 若羌县| 疏附县| 垣曲县| 庄河市| 射阳县| 阜南县| 忻州市| 岑溪市| 盐城市| 通渭县| 盈江县| 亚东县| 桦南县| 内黄县| 江西省| 治县。| 界首市|