前言
在此前的SPRing: A Developer's Notebook摘錄中,作者BrUCe Tate和Justin Gehtland討論了在Spring中使用iBATIS OR持久化框架的內容。出于其他的原因,此選擇要求深入SQL底層。在這篇第五章的摘錄中,他們轉向那些更加徹底地把SQL從你的Spring應用中獨立的持久化框架。
JDO是基于接口標準的持久化,或如Tate 和Gehtland所言,“在java應用中非EJB標準的持久化”。一經提及JDO,他們不是卷入那場“眾說紛紜”的辯論之中,而是著眼于如何把一頂級的實現,Kodo,引入到你的Spring應用中。接著轉去討論最流行的,且可能是與Spring集成最好的OR框架:Hibernate.正如他們所指出的,“盡管是非標準的,但你可以說在EJB之后,Hibernate是世界上最流行的持久化框架了?!北菊轮?,作者們不僅為你演示設置每個框架的具體細節,而且還清楚地表明了各種框架的使用方法之差異。
就象Developer's Notebook 系列中所有的書一樣,你將由直接的且實用的方式獲得信息,這些信息包含了完成你工作所需的細節。換言之:“一切來自實戰,沒有講義?!?/P>
在Spring中使用JDO
JDO是Java 應用中非EJB標準的一種持久化方式。在這部分中,我們將使用我們喜歡的JDO實現,Kodo,來實現我們應用中的透明持久化。雖然我們不會試著教給你JDO的知識,但會說明怎樣使用JDO來為我們的應用提供持久化的功能。
無論你從事JDO多長時間,可能都會使你想起眾說紛紜的辯論。直到最近,大多數人都避免使用JDO.隨著JDO2.0 版本和許多可靠的商業化及開源的JDO實現的暫停發布,這個持久化標準看起來就象是一個強壯的運動員在ORM舞臺上蓄勢待發(譯注:在翻譯本文時獲悉,JDO2.0已投票通過)。實際上,我所鐘愛的ORM是Solar Metric的Kodo, 它或許稱得上JDO實現中的矯矯者了。當Kodo達到商業化實現時,它看起來比其它可供選擇的實現更加強壯,且已獲得更靈活的映射支持、更易于治理,來自持久化企業核心越來越豐富的支持,考慮以下這些優勢:? 若你正尋找某些免費的或能對源代碼更好地控制的JDO實現,你可在眾多的開源的JDO實現中選擇。? 你可選擇一價格合理的商業化產品,而且能得到支持和維護。? 若選擇了那些一流的商業化廠商,從較佳治理到靈活映射,你都可能得到難以置信的功能和性能。? 在獲得所有的這些優勢的同時,你還能獲得開源標準提供的保護和安全。
我該怎么辦?
你將使用JDO來創建一個持久化模型,隨后在fa?ade層中使用那個模型。盡管應用程序中已創建了業務域模型,但仍未被持久化。你業已獲得fa?ade層的接口,那么只需完成下述的操作步驟,便可在你的應用中使用JDO了:1.通過字節碼增強器(byte code enhancer)讓域模型持久化。
2.簡單修改Spring的配置文件,你就可在你的應用中使用Kodo. 3.通過JDO模板,建構使用持久化模型的fa?ade.
就這些了。Spring會治理由PersistenceManagerFactory和PersistenceManager組成的JDO之核心資源。把這些非凡的選項當作是JDO的數據源與連接。你還可以讓Spring來治理事務。上述三個步驟就是你所要完成的工作。
首先,你需要下載和安裝Kodo.從試用的版本開始,你可在這里找到http://www.solarmetric.com.本書中使用3.2.1版本。再次提醒,你得把/kodo-jdo-3.2.1/lib中的包放入我們的/lib目錄下。
為持久化模型,你得修改Ant任務以添加JDO字節碼增強的步驟:象示例5-8所示的那樣,添加Ant任務來完成這一動作。
示例5-8.
你也需要在Ant 建構文件中給kodo-jdo.jar, jdo-1.0.1.jar, and Jakarta-commons-lang-1.0.1.jar增加路徑元素。
下一步,建構持久化映射。最簡便的辦法就是通過Kodo向導。運行Workbench(在你所安裝的Kodo的/bin目錄下),并從菜單中選擇MetaDataàCreate MetaDate.反之,你可使用/kodo-jdo-3.2.1/bin目錄下的metadatatool 和mappingtool兩個腳本,它們分別被kodo.jdbc.meta.MappingTo-ol和kodo.meta.JDOMetaDataTool的運行文件所使用。
為了與其它JDO版本保持一致,因此你打算用xml從頭建構映射文件。用類的元數據和。mapping 文件生成。jdo文件。此兩文件都在/war/WEB-INF/classes/com/springbook目錄下。
示例5-9聲明元數據文件。
示例5-9 package.jdo
示例5-10描述了映射文件。
新聞熱點
疑難解答