JPA属性java.net.URL
HI,
我有一个对象,它有一段与之相关的URL信息。 目前我将此URL保存在一个简单的String属性中,但java.net.URL会为我提供额外的好处,例如检测格式错误的URL等。
另一方面,如果JPA只是为URL-Object创建了一个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,user-de fi ned serializable types,byte [],Byte [],char [],andCharacter []); 枚举; 实体类型和/或实体类型集合; 和可嵌入的类(参见第2.1.5节)。
加上对collections品的支持。 但没有URL
原始支持。 然而,它们将被支持为Serializable
,我想这将导致你提到的LOB。
但是你应该能够轻松地规避这一点:你可以在一个字段中将URL作为String
,然后将一个从String
转换为URL
的getter / setter。 然后使用注释映射该字段。
或者相反:字段中的java.lang.URL
,以及从URL
转换为String
的getter / setter,然后使用注释映射getter / setter。 我认为它也有效。
您还可以使用JPA AttributeConverter
如此处的说明)将URL
对象映射到String
列中(Hibernate可以开箱即用)
或者,如果您只对validation感兴趣,则可以使用BeanValidation。 在HibernateValidator扩展中有一个@URL
注释,你也可以创建自己的约束,例如解释
我个人更喜欢BeanValidation解决方案,因为考虑到url为java.net.URL
带来一些复杂性:需要JPA AttributeConverter
,JSF Converter
,JAXB Adapter
…而它只是用于validation
- 为什么Java的try-with-resource需要声明
- 如何在Eclipse中的项目中包含.class文件? (JAVA)
- 如何使用javax.xml.crypto.dsig对XML文件进行签名时添加命名空间。*?
- doLayout和’Java Play!’中的模板包含有什么区别?
- 如何在Java中清除控制台?
- Java – 使用Accessor和Mutator方法
- Java中的public,protected,package-private和private有什么区别?
- Mockito的Matcher vs Hamcrest Matcher?
- 处理程序将HTTP标头添加到使用Axis Client API时未调用的HTTP请求