2010-09-03 47 views
6

因爲我們正在開始一個新的項目(基於Hibernate 3的頂部使用JPA 2)我們需要能夠存儲XML文檔,然後在以後的內容和結構查詢JPA支持。我們希望支持的數據庫是DB2,Oracle和SQLServer。對XML數據類型的列

我知道所有這三個DB廠商支持原生XML查詢(使用SQL和XQuery語句一樣),但有這個範圍內的Hibernate任何直接的支持?換句話說,我可以寫一組休眠數據訪問代碼,查詢所有3種數據庫類型不可知使用內置的Hibernate/JPA的功能,或將我需要爲每個DB類型編寫特定的查詢?

我明白,我可以定義列作爲@Lob列,然後讀取所有記錄,解析和檢查,但我希望利用數據庫引擎的力量,而不是自己做。

因爲我們永遠只能使用一個DB的味道在時間基準,它只是我們希望能夠支持所有3,我們應該需要。

感謝史蒂夫

回答

2

JPA不提供這些專有類型之外Lob具體的支持。對於更高級的支持,我想你必須實現一些Hibernate自定義用戶類型。以下文件可能會給你一些想法。

當然,他們將特定的數據庫,並將使代碼的可移植性。

關於查詢,AFAIK在HQL語句的WHERE子句中調用並且Hibernate不知道的任何函數都按原樣傳遞給數據庫。所以你可以利用特定的功能。但是,這又會使查詢數據庫具體化。也許可以考慮使用orm.xml映射具體部署。