2010-11-22 171 views
11

我有一個XML文件的負載,併爲他們的XSD。Java:XML到數據庫中,最簡單的方法是什麼?

我想簡單地轉換成POJO的並將它們插入到數據庫中。 數據庫架構在我的控制之下,所以它可以是我所喜歡的。

我環顧了一些apis的負載,但想要另一個意見什麼是最好的。

  • JAXB?
  • XMlBeans?
  • XPATH to DBUnit?

hibernate是否有一些api從XSD創建POJO,然後將XML讀入這些POJO中,然後將數據插入到數據庫中?

或者春天有什麼功能可以幫助嗎?

我想我只是在你的意見後,只是有一個API我錯過了,這將有助於做我想做的事情。

感謝 傑夫·波特

+0

你可以選擇你的數據庫嗎?如果是這樣,你可以考慮使用存在數據庫,這是一個流行的開源XML數據庫。 – JasonPlutext 2010-11-22 20:10:09

回答

3

或者你可以跳過翻譯成的POJO的步驟,直接存儲XML作爲一個CLOB。它稍後會允許「鴨子打字」,這可能會讓你覺得有利。

如果您以後需要分別查詢這些對象,映射到Java POJO是有意義的。如果您始終需要整個流而無需查詢XML中的值(例如XPath),那麼我會說將XML存儲爲CLOB更有意義。

+0

+1:我會這樣做,再加上提取選定的字段並將它們存儲爲額外的_indexed_列,以便稍後可以進行高速查找。當然,要提取的正確字段取決於要查詢的查詢類型。 – 2011-08-02 10:24:45

2

快速回答:JAXB,JPA和Spring

當插入XML到你需要考慮你想要什麼樣的操作對XML的格式表示數據執行數據庫。

例如,您可以將XML視爲輸入數據,然後創建一個以易於查詢的方式保存數據的模式。如果這就是你想做的事情,那麼使用JAXB作爲解組器,因爲你可以通過xjc工具輕鬆地從XSD生成適當註釋的pojos /實體。有一些額外的JPA註釋,你會有一個快速的解決方案,將XML映射到一個完整的模式,允許各種混合和匹配查詢以及替代視圖。當然,JAXB註釋可以用來生成各種輸出格式(XML,JSON,YAML等),所以當你想輸出這些數據時,你不會受限於XML。

接下來,您可以將XML視爲您希望存儲的完整實體。在這種情況下,您希望將其存儲爲CLOB或XML(在Oracle中)。Oracle certainly supports基於XPath的搜索,您可以獲得查詢結果數據集的好機會。最後,如果您認爲XML過於臃腫,並且您控制了對pojos的任何結果更改,則可以將未編組pojos作爲BLOB直接序列化到數據庫中。你將有一個相當緊湊的模式和數據庫,但是當涉及到查詢時,你將會受到影響,因爲它全部是二進制的。如果您需要反序列化基於舊pojos的非常舊的數據集,那麼稍後您將遇到二進制版本兼容性問題。

因此,總而言之,JAXB是處理解組和後來編組過程的一個非常好的方法。它的快速和簡單,並且(在這裏點頭@Blaise Doughan)在SO上得到很好的支持。 JPA是執行數據庫操作的首選技術。 Hibernate是JPA的一個實現者(具有良好的擴展),並且Spring通過HibernateTemplate精美地支持它。同樣,你可以使用Spring的JpaTemplate,它的學習曲線可能稍微淺一些。

相關問題