通过多个线程从DB加载数据的最佳方法是什么

时间:2015-05-13 09:49:45

标签: java multithreading jdbc spring-batch java.util.concurrent

我在父子关系数据库中有一些数据,其中我的表实际上代表了一个树数据结构的森林。 enter image description here

表格结构如下:

row1  parent: null
row2  parent:row1
row3  parent:row2
row4  parent:row1

现在当我通过JDBC将数据从DB加载到我的数据结构时,我现在正在做的是:

1. load all row where parent is null [load all the root of trees]
2. Then for each child of each root load the child in a recursive manner.
3. But here all the trees are loaded one by one.

我想做什么,为每棵树生成一个线程,因此可以同时加载所有树。我可以使用任何与JDBC相同或任何建议的框架,请帮助。

2 个答案:

答案 0 :(得分:0)

你可以使用hibernate框架在任何数据库中操作(创建,删除,插入,更新......)数据,它非常灵活地进行数据操作

答案 1 :(得分:0)

虽然这不能直接回答您的确切问题,但我建议您检查一下您的数据结构。您已经使用了Adjacency List Model,最初可以简单地实现,在查询时会打开一整套丑陋的蠕虫。

还需要考虑其他模型,例如Nested Set Model,对树木和子树的查询要容易得多。

本文详细解释了两者:Managing Hierarchical Data in MySQL

尽管该文章是特定于RDBMS供应商的,但如果可以轻松调整以适合您的系统。