我正在使用JPA和Hibernate,需要在数据库中存储小的XML数据(最多500个字符)。
我不需要查询XML数据,也就是说,XML数据永远不会成为WHERE
子句的一部分。
我应该使用哪种数据类型?
答案 0 :(得分:4)
使用@Lob
或使用type="clob"
注释您的媒体资源。
@Lob表示该属性应该保存在Blob或 Clob取决于属性类型:java.sql.Clob,Character [], char []和java.lang.String将保存在Clob中。 java.sql.Blob,Byte [],byte []和serializable类型将被保留 在一个Blob。
您可能还会考虑对此类数据使用延迟加载@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,它将非常方便。