JPA中XML数据的列类型

时间:2013-07-02 16:42:27

标签: java hibernate database-design jpa

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

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

我应该使用哪种数据类型?

3 个答案:

答案 0 :(得分:4)

使用@Lob或使用type="clob"注释您的媒体资源。

  

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

Source / Oracle docs

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

XML是一种基于文本的格式,将其存储在数据库中并不是一种不好的做法,Microsoft SQL Server甚至具有XML数据类型。因此,如果您使用的是Microsoft SQL Server,则可以使用它。请从msdn:

中找到以下链接的更多信息
http://msdn.microsoft.com/en-us/library/hh403385.aspx

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