0

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

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

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

4

3 回答 3

4

@Lob使用或使用注释您的财产type="clob"

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

/ Oracle 文档

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

于 2013-07-03T09:02:24.947 回答
3

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

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

于 2013-07-14T20:12:32.847 回答
0

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

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

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

于 2013-07-18T14:46:34.880 回答