关系数据库中如何存储xml数据?

关系数据库中如何存储xml数据?,第1张

XML文档的一个普通存在的问题是如何持久保存(Persist) XML文档。在一个关系数据库中存储XML文档是一个非常常用的方法,因为当前关系数据库的使用非常广泛。

将XML文档插入到数据库中不是简单的方法,这其中需要很多其它额外的考虑。现在我提供了一些技巧,你可以使用这些技巧在关系数据库中存储XML文档。

1、文档表:

一个最简单和容易的方法是,在一个具有单一文本域的数据库中建立一个表,由此你可以在表中存储XML数据。由于这些特定数据库和特定XML文档,这一文本域可以是一个二进制大型对象(BLOB,binary large object)。有些数据库需要存储的是大量的BLOB数据而不是文本。

这一方法的优点是,将数据存入表中变得相当简单,而且重新获得也同样很容易。这种文档表的管理也很方便。

这种方法的缺点在于你将可能无法进行一些有用的文本搜索,并且在放置特定文档时也会碰到困难,因为没有任何方法来识别表中的文档;

2、主键表:

下一个比较复杂的方法是使用一个主键表(keyed table)。这种方法与文档表非常相似,但此时你的表中包含两个域:一个唯一的主键和XML文档。使用这种方法,你既可以具有存储和获得整个XML文档的简洁性,也可以使用一些管理这些唯一主键的复杂 *** 作;

建立主键的一种通用方法是使用XML文档中的MD5求和检验。请记住如果你想在表中包括多份XML文档,这一方法远不足够。在这种情况下,你可以添加额外的key fields标识键列。

与文档表一样,主键表很容易执行,它可以在表中查找特定的文档。然而,与文档表一样,你仍然不能执行任何文本查询;

3、有限离散表:

这一方法更加复杂,但它给你带来更多的灵活性。使用有限离散表,你可以建立用于存储有限分散的XML信息的表,这是什么意思?请看以下的例子:

假设你具有一个顺序文档。在文档的根部(Root)有一个Order元素,这一元素包括CustomerInfo, ItemInfo, 以及hippingInfo元素。在数据库中,你可以建立一个OrderDoc表,表中包含一个ID域,一个CustomerInfoId域,一个ItemInfoId域,一个ShippingInfoId域。然而,你还可以建立一个CustomerInfoId表,一个ItemInfoId表,一个ShippingInfoId表。这些表都包含很多信息相关的各自的ID域,这些信息包括用户,选项,邮寄信息。在这一表中,还包含着其它额外的等级。比如,CustomerInfo表包含AddressInfo域,即从AddressInfo表中引用的入口。

这种方法的优点是,允许你更紧密地建立XML数据的模型。这种方法使得你进行数据的一些成熟的查询。它也使得数据的使用性更强,因为你不再需要XML分析器来读取数据。

不足之处是这种方法需要更多的精力来开发和维护。这意味着每一文档都需要解析成分离的部分,然后存储在数据库中。如果这一过程没有得以很好管理,有可能会丢失一些数据。而且,这也意味着,当从一个数据库中获得一个XML文档时,你不得不连接这些分散的部分。

打开我们的IDEA的settings,配置如下信息 把SQL Dialect改成我们所用的数据库,

把我们写SQL的mapper.xml文件夹路径配置在Path中,保存。

将一个数组存入数据库和使用的语言有关系。

通常的做法是将数组的内容转换后传递到和语言相关的数据处理方法中进行处理。

涉及到的数据转换的方法:

1:可以转换为json格式

[{key:1},{key:2}]

2:可以转换为xml

<values>

<key>1</key><key>2</key>

</values>

数据处理方法解析转换后的字符串,执行数据库保存 *** 作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10707109.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存