代码之家  ›  专栏  ›  技术社区  ›  er4z0r

jpa属性java.net.url

  •  12
  • er4z0r  · 技术社区  · 14 年前

    你好,

    我有一个对象,它有一个与之相关联的URL信息。 目前我将这个URL保存在一个简单的字符串属性中,但是java.net.url会 为我提供额外的好处,如检测格式错误的URL等。

    另一方面,如果JPA只是为URL对象创建一个LOB,我会认为它非常难看。是否有人知道java.net.url类型的属性将如何持久化到 数据库由兼容的JPA提供者提供?

    2 回复  |  直到 8 年前
        1
  •  11
  •   ewernli    14 年前

    根据JPA规范:

    持久的 实体可以是以下类型: Java原语类型;JavaLang.Stand; 其他Java可序列化类型 (包括原始人的包装纸) 类型,java.math.biginteger, java.math.bigdecimal、java.util.date和 Java.UTI.Lale[ 7 ],Java.Q.L.DATE, java.sql.time,java.sql.timestamp, 用户定义的可序列化类型,字节[], 字节[]、字符[]、字符[]); 枚举;实体类型和/或 实体类型集合;以及 可嵌入类(参见第节 2.1.5)。

    以及对收藏的支持。但没有原始的支持 URL . 但是,它们将被支持为 Serializable ,我想这会导致你提到的业务线。

    但是您应该能够轻松地绕过这个问题:您可以将URL作为 String 在字段和从中转换的getter/setter中 统一资源定位地址 不过。然后用注释映射字段。

    或者相反的是: java.lang.URL 在字段中,以及要从中转换的getter/setter 统一资源定位地址 然后用注释映射getter/setter。我认为它也能起作用。

        2
  •  1
  •   kwisatz    8 年前

    你也可以用JPA AttributeConverter 如解释 here 地图A URL 对象变成 String 列(Hibernate是开箱即用的)

    或者,如果您只与验证相关,那么可以使用beanvalidation。有一个 @URL 在HibernateValidator扩展中,您还可以创建自己的约束,如Explain here

    我个人更喜欢beanvalidation解决方案,因为考虑到url java.net.URL 带来一些复杂性:对JPA的需求 属性转换器 JSF Converter JAXB Adapter …只是为了验证