Expandir Contraer Expandir problema con JTree Lazy loading

He implementado un árbol usando carga perezosa. Los nodos de primer nivel se crean en el momento de la creación del árbol, mientras que los nodos secundarios se crean solo cuando un usuario expande cualquier nodo en particular.

Los datos provienen de la base de datos y enviamos una consulta a la base de datos para llenar los nodos secundarios. Se implementó TreeExpansionListener y se usó la implementación anulada del método treeExpanded. En la expansión, elimino todos los nodos secundarios para el nodo seleccionado, hago una consulta de base de datos y agrego los registros como secundarios al nodo seleccionado. Antes de agregar cualquier nodo a un árbol, se agrega un niño ficticio al nodo. Trabajando con DefaultMutableTreeNode.

Hasta ahora todo bien, estaba funcionando bien por expectativa.

Problema 1: como usted, es una llamada a la base de datos por expansión, por lo tanto, si un nodo se contrae y se vuelve a expandir, haré un viaje a la base de datos y procesaremos nuevamente una vez más ... La idea es no cargar los nodos nuevos si ya están expandidos ...

Problema 2: si tuviera que hacer una actualización forzosa, es decir, volver a cargar el árbol y mantener el estado de expansión. Esto está en funcionamiento ahora ... ¿Cómo puedo lograr lo mismo junto con la solución al Problema 1 anterior?

Aprecio cualquier ayuda en esto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta