我有一個對象有一段URL信息與它關聯。 目前我保存這個URL在一個簡單的字符串屬性,但會的java.net.URL提供 我額外的東西,如惡意網址的檢測等
在另一方面,我會認爲這是非常難看,如果JPA只需爲URL對象創建一個LOB即可。有誰知道如何通過兼容的JPA提供程序將類型爲java.net.URL的屬性持久保存到數據庫 ?
我有一個對象有一段URL信息與它關聯。 目前我保存這個URL在一個簡單的字符串屬性,但會的java.net.URL提供 我額外的東西,如惡意網址的檢測等
在另一方面,我會認爲這是非常難看,如果JPA只需爲URL對象創建一個LOB即可。有誰知道如何通過兼容的JPA提供程序將類型爲java.net.URL的屬性持久保存到數據庫 ?
按照JPA規範:
持久連接的視場或 性質也許的以下類型的實體: Java基本類型; java.lang.String中; 其他Java序列化類型 (包括原始 類型的包裝,java.math.BigInteger中, java.math.BigDecimal中,java.util.Date, java.util.Calendar中[7],java.sql.Date, java.sql.Time,java.sql.Timestamp, 用戶定義的可序列化類型,byte [], Byte [],char [],andCharacter []); 枚舉;實體類型和/或實體類型的集合;和 可嵌入類(請參閱部分 2.1.5)。
加上對集合的支持。但沒有URL
的原始支持。然而,他們會被支持爲Serializable
,我想這將導致您提到的LOB。
但是,你應該能夠很容易地規避:你可以有URL作爲一個字段,一個getter/setter方法是將從String
到URL
雖然String
。然後,您將該字段與註釋進行映射。
或者相反:java.lang.URL
在一個字段中,並且getter/setter將URL
轉換爲String
,那麼您將getter/setter映射爲註釋。我認爲它也適用。
我不認爲JPA規範提供了這一點。你正在使用哪個實現? – skaffman 2010-03-01 11:00:51
例如Hibernate有這個 – skaffman 2010-03-01 11:11:48
的JPA擴展,例如DataNucleus對此(以及許多其他標準類型)具有JPA(和JDO)擴展, – DataNucleus 2010-03-01 11:40:44