【问题标题】:Column Type for XML Data in JPAJPA 中 XML 数据的列类型
【发布时间】:2013-06-30 03:33:27
【问题描述】:

我正在将 JPA 与 Hibernate 一起使用,并且需要在数据库中存储较小的 XML 数据(最多 500 个字符)。

我不需要查询 XML 数据,即 XML 数据永远不会成为 WHERE 子句的一部分。

我应该为此使用什么数据类型?

【问题讨论】:

  • 您有目标数据库运行时吗?还是它是通用的,任何数据库? 500 个字符是明确的长期存储限制吗?
  • @John Ament 我正在寻找与数据库无关的解决方案,500 绝对是最大值。

标签: java hibernate database-design jpa


【解决方案1】:

使用@Lob 注释您的属性或使用type="clob"

@Lob 表示该属性应该保存在一个 Blob 或一个 Clob 取决于属性类型:java.sql.Clob、Character[]、 char[] 和 java.lang.String 将保存在 Clob 中。 java.sql.Blob, Byte[], byte[] 和可序列化类型将被持久化 在一个 Blob 中。

Source/Oracle docs

您也可以考虑对此类数据使用延迟加载@Basic(fetch = FetchType.LAZY)

【讨论】:

    【解决方案2】:

    我认为没有理由在这里使用 LOB,因为 500 是您的最大长度。一种选择是简单地将字符串映射到列并在外部解析 XML 类型。

    另一种选择是使用休眠特定的注释来映射外部类型 - http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#d0e2794

    【讨论】:

    • 感谢您的赏金。祝你好运!
    【解决方案3】:

    XML 是一种基于文本的格式,将其存储在数据库中并不是一个坏习惯,Microsoft SQL Server 甚至有 XML 数据类型。因此,如果您使用的是 Microsoft SQL Server,则可以使用它。请从 msdn 的以下链接中找到更多信息:

    http://msdn.microsoft.com/en-us/library/hh403385.aspx
    

    对于其他数据库也是如此,最好将其以文本格式存储在 varchar 或 nvarchar 中,因为将来如果您想查询数据库并处理 XML,这将非常方便。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多