Java 树:持久化时如何识别/标记根对象?
如何持久化自定义树结构的根节点,使它们可以通过简单的Java 树:持久化时如何识别/标记根对象?,java,sql,tree,rdbms,Java,Sql,Tree,Rdbms,如何持久化自定义树结构的根节点,使它们可以通过简单的SELECT检索 伪代码 class Node { Long id; String label; Node parent; List<Node> children; } 您可以使用邻接列表: node parent 1 NULL 2 1 3 1 4 2 5 NULL 6 5 根节点可以通过找到,其中父节点为NULL如果每个子节点最多有
SELECT
检索
伪代码
class Node {
Long id;
String label;
Node parent;
List<Node> children;
}
您可以使用邻接列表:
node parent
1 NULL
2 1
3 1
4 2
5 NULL
6 5
根节点可以通过
找到,其中父节点为NULL
如果每个子节点最多有一个父节点,则无需在单独的表中对关系建模。此外,为了使加载树的速度更快,同时降低更改根的速度,请在每一行中存储根节点的ID。这允许您在一个快速查询中加载树的所有节点,并在客户端上构建树
CREATE TABLE NODES(
ID INTEGER NOT NULL UNIQUE,
ROOT_ID INTEGER NOT NULL,
PARENT_ID INTEGER,
LABEL VARCHAR(255)
);
非常模糊的问题,佩西斯特先生在哪里?你在说什么样的“选择”?@SanjayT.Sharma请参考标签。你使用的是什么数据库和版本?这是一个理论问题。不过,我使用的是最新的MySQL.Removed root标记,因为它指的是Unix systems.Great。这证实了我的想法:)。我看到树实现对于根节点没有特殊情况。我只需要确定它们是如何编码的。“这允许您在一个快速查询中加载树的所有节点,并在客户端上构建树。”-非常酷的建议。我没想到。
CREATE TABLE NODES(
ID INTEGER NOT NULL UNIQUE,
ROOT_ID INTEGER NOT NULL,
PARENT_ID INTEGER,
LABEL VARCHAR(255)
);