【正文】
同時(shí)我們更希望看到對(duì)象數(shù)據(jù)庫(kù)將在工程技術(shù)和遠(yuǎn)程通信技術(shù)應(yīng)用的優(yōu)勢(shì),而不是銀行業(yè)務(wù)和辦公財(cái)政業(yè)務(wù)的應(yīng)用。 結(jié)束語(yǔ) 6 雖然現(xiàn)在來(lái)確定對(duì)象持久化的方法特別是 java 持久化是否將來(lái)會(huì)成為主流還為之尚早,但是可以確定的是多種多樣的方法會(huì)同時(shí)存在。他獲得紐約州立大學(xué)的數(shù)學(xué) .,后來(lái)在柏林的一所大學(xué)擔(dān)任研究源。激動(dòng)人心的是隨著基礎(chǔ)產(chǎn)品的日趨成熟,所有的這些功能也都在逐步的增加。 上面提到的三個(gè)類, Transaction, Database 和 ObjectStore 是 ObjectStore 主要的類。 } catch(DatabaseRootNotFoundException exception) { (fooHead, new Foo())。 } 下面的代碼片段展視了如何開(kāi)始和提交事務(wù): Transaction transaction = ()。 try { db = (dbName, )。 Database 類的 getRoot 和 setRoot 方法具有這個(gè)功能,我想看例子才是最有幫助的。數(shù)據(jù)庫(kù)類提供 create, open, close 方法,事務(wù)類有開(kāi)始事務(wù) (begin),停止事務(wù) (abort),結(jié)束事務(wù) (mit)等方法。 PSE 的事務(wù)語(yǔ)意 以前的 ObjectStore 使用者或許會(huì)發(fā)現(xiàn),數(shù)據(jù)庫(kù)和事務(wù)總是關(guān)聯(lián)在一起。這個(gè)步驟是非強(qiáng)制性的,它能提供一個(gè)系統(tǒng)的方式來(lái)確保 fetch()或者 dirty()在對(duì)象內(nèi)容被訪問(wèn)或者修改之前被調(diào)用。 ? 修改引用非靜態(tài)屬性的方法來(lái)調(diào)用 ()和 ()方法。 ObjectStore 需要調(diào)用該方法。 ? 定義一個(gè) clearContents()方法,用來(lái)重新設(shè)置實(shí)例的值為默認(rèn)值。這樣就需要一個(gè)獨(dú)立的方法來(lái)設(shè)置 Field 對(duì)象的類型, ObjectStore 需要調(diào)用 flushContents()方法。 ? 定義一個(gè) flushContects()方法,用來(lái)將修改 的實(shí)例(當(dāng)前的持久化對(duì)象)拷貝回?cái)?shù)據(jù)庫(kù)中。 ObjectStore 需要調(diào)用 initializeContents()方法。類文件的后處理技術(shù)添加了以下的修改到類中: ? 使類從 或者 繼承 定義 initializeContents() 方法來(lái)加載實(shí)參到你的 Persistent 子類的空實(shí)例中,GenericObject 類中提供的 ObjectsStore 方法,用來(lái)獲取每個(gè)屬性的類型。有可能持久化的類只能持久它們本身,而已知要持久化的類能夠操作他們的持久化對(duì)象。 PSE 的工作是通過(guò)后處理技術(shù)和在開(kāi)發(fā)人員創(chuàng)建的類文件中添加注解。不遠(yuǎn)的將來(lái),購(gòu)買(mǎi)大型的單個(gè)軟件的概念將成為過(guò)去 的事。除了這個(gè)區(qū)別,兩個(gè)產(chǎn)品就沒(méi)有其它的區(qū)別了。 PSE Pro 能夠恢復(fù)由于系統(tǒng)故障導(dǎo)致失敗的事務(wù)引起的數(shù)據(jù)庫(kù)的破壞。例如, PSE 和 PSE Pro 是在不同的環(huán)境下開(kāi)發(fā)的。關(guān)于 PSE 和專業(yè) PSE 的更多信息請(qǐng)參看文獻(xiàn)部分。 對(duì)象數(shù)據(jù)庫(kù)和 java 持久化 在行業(yè)中許多正在進(jìn)行的項(xiàng)目都在對(duì)象層面提供了 java 持久化。一個(gè)更容易擴(kuò)展的設(shè)計(jì)是引進(jìn)一個(gè)中間層來(lái)連接 DBMS服務(wù)器,該層提供一個(gè) JDBC 網(wǎng)絡(luò)驅(qū)動(dòng)器,它通過(guò)公共的協(xié)議來(lái)訪問(wèn) DBMS 服務(wù)器。下面是關(guān)于幾個(gè)主要 JDBC 接口的描述: ? 手動(dòng)加載驅(qū)動(dòng)和為新的數(shù)據(jù)庫(kù)連接提供支持 ? 表示一個(gè)特殊數(shù)據(jù)庫(kù)的連接 ? 在執(zhí)行給定連接的 SQL 語(yǔ)句時(shí)擔(dān)當(dāng)容器 ? 控制訪問(wèn)的結(jié)果集 你可以多種方式來(lái)實(shí)現(xiàn) JDBC 驅(qū)動(dòng)。 JDBC 被設(shè)計(jì)為能與 java 系統(tǒng)相互兼容。 使用事務(wù)完整性的持久化:介紹 JDBC 與 X/Open 的 SQL CLI(客戶端接口 )和微軟抽象的 ODBC 類型, JDBC 的目的也是提供一個(gè)與數(shù)據(jù)庫(kù)管理系統(tǒng)( DBMS)無(wú)關(guān)的數(shù)據(jù)庫(kù)連接策略。這種特性能夠被用作一個(gè)安全策略, 通過(guò)定義無(wú)需串行化的屬性為私有臨時(shí)類型的變量。 Foo foo = (Foo)()。 // Step 2. Create an object input stream ObjectInputStream ins = new ObjectInputStream(in)。其它引用對(duì)象以對(duì)象句柄的形式存在來(lái)保存空格和防止循環(huán)引用。 writeObject 方法串行化了 foo 對(duì)象和它的傳遞閉包 ―― 指的就是圖中所有引用 foo的對(duì)象。 (new Foo())。下面是如何使用 java 的串行化: // Writing foo to a stream (for example, a file) // Step 1. Create an output stream // that is, create bucket to receive the bytes FileOutputStream out = new FileOutputStream(fooFile)。 串行化實(shí)現(xiàn) java 持久化 對(duì)象串行化是 java 語(yǔ)言中對(duì)象和元素的流的存儲(chǔ)和讀取的特殊策略 。關(guān)系數(shù)據(jù)庫(kù)廠商和較小的對(duì)象 /關(guān)系廠商都提倡這種做法;然而,這些公司在塑造對(duì)象存儲(chǔ)框架上是否能成功仍有待觀察。 IDL 機(jī)構(gòu)的底部包括兩種,第一,額外的中間層總是需要額外的轉(zhuǎn)換成,這樣會(huì)影響系統(tǒng)的總體性能;第二,它限制了數(shù)據(jù)庫(kù)服務(wù)對(duì)于特定廠商是唯一的價(jià)值 ,這樣可能對(duì)于應(yīng)用開(kāi)發(fā)人員來(lái) 說(shuō)是相當(dāng)有價(jià)值的。 一種策略為達(dá)到這個(gè)目的就是通過(guò)接口定義語(yǔ)言( IDL)引進(jìn)一個(gè)新的層。 對(duì)獨(dú)立語(yǔ)言對(duì)象表示規(guī)范化的進(jìn)行擴(kuò)展。把對(duì)象的布局改變成普通形式的過(guò)程被大家稱做對(duì)象形式的規(guī)范化。后面的方法提倡通知可持久化對(duì)象存儲(chǔ)和從存儲(chǔ)器檢索,模型提供一個(gè)實(shí)體對(duì)象的應(yīng)用試圖 ―― 通常延伸虛擬內(nèi)存。 持久化和類型 2 面向?qū)ο笳Z(yǔ)言的支持者會(huì)說(shuō)持久化和類型是對(duì)象的兩個(gè)相交的特性,也就是說(shuō),同一類型的對(duì)象的持久和變化過(guò)程是能夠相同的,因?yàn)橐粋€(gè)特性不能夠影響其它的特性。 大多數(shù)的對(duì)象數(shù)據(jù)庫(kù)能夠處理在 C++和 Samlltalk 中像這樣的查選語(yǔ)法,但是它門(mén)確很難處理更大數(shù)據(jù)的集合和更復(fù)雜的查詢表達(dá)式?,F(xiàn)在可以想 象查詢賬戶集合的簡(jiǎn)潔性, ingoodstanding 為多有 in good standing 的賬戶實(shí)行不同的基礎(chǔ)上的業(yè)務(wù)規(guī)則。多種形式組合的方法使對(duì)象的集合在構(gòu)建語(yǔ)意查詢上空前的簡(jiǎn)潔。結(jié)構(gòu)化查詢語(yǔ)言( SQL)和它的擴(kuò)展已經(jīng)證明使用條件判斷存取機(jī)制的關(guān)系系統(tǒng)的成功。對(duì)象的協(xié)同定位是持久化存儲(chǔ)中關(guān)系和面向?qū)ο髷?shù)據(jù)庫(kù)非常不一樣的一個(gè)方面。幾乎所有的對(duì)象數(shù)據(jù)庫(kù)都提供一些機(jī)制來(lái)增強(qiáng)系統(tǒng)的性能,包括復(fù)雜的對(duì)象關(guān)系,都超過(guò)傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)。因此,為了構(gòu)建一個(gè)對(duì)象模型,這些關(guān)系從進(jìn)程運(yùn)行時(shí)已經(jīng)存在的關(guān)鍵字被構(gòu)建的,又被稱作表連接。關(guān)聯(lián)方式的數(shù)據(jù)存儲(chǔ)趨于根據(jù)類型進(jìn)行數(shù)據(jù)匯總,表中的行表示硬盤(pán)上同一種類型對(duì)象的物理存儲(chǔ),對(duì)象之間的關(guān)系是通過(guò)多張表共享關(guān)鍵字表現(xiàn)的。 沒(méi)有對(duì)象是一個(gè)島嶼 在真實(shí)的世界,你很少發(fā)現(xiàn)一個(gè)事物跟其它事物之間沒(méi)有關(guān)系,事物是對(duì)象模型的成分。 但是,編程語(yǔ)言提供的標(biāo)準(zhǔn)類庫(kù)和包都沒(méi)有包含事務(wù)約束。 The three classes specified above Transaction, Database, and ObjectStore are fundamental classes for ObjectStore. PSE does not support nested transactions, backup and recovery, clustering, large databases, object security beyond what is available in the language, and any type of distribution. What is exciting, however, is all of this functionality will be incrementally added to the same foundation as the product matures. About the author 7 Arsalan Saljoughy is asystems engineer specializing in object technology at Sun Microsystems. He earned his . in mathematics from SUNY at Albany, and subsequently was a research fellow at the University of Berlin. Before joining Sun, he worked as a developer and as an IT consultant to financial services panies. Conclusion Although it is still too early to establish which methodology for object persistence in general and Java persistence in particular will be dominant in the future, it is safe to assume that a myriad of such styles will coexist. The shift of storing objects as objects without disassembly into rows and columns is sure to be slow, but it will happen. In the meantime, we are more likely to see object databases better utilized in advanced engineering and telemunications applications than in banking and backoffice financial applications.1 英文翻譯 對(duì)象持久化和 Java-深入的了解面向?qū)ο笳Z(yǔ)言中的對(duì)象持久的討