]
Joonas Koivunen updated HHH-1395:
---------------------------------
Attachment: utils-parent-20091117.tar.gz
A nested set implementation building on top of Christians.
Modification summary:
* package changed to org.hibernate.utils.nestedset
* use slf4j for logging
* add support for changing parent of a node
* give stateless session to executeInMemory() in NestedSetOperation
The package extracts as a maven project "utils-parent" which includes module
"utils-nestedset".
To compile it use "mvn compile" in the utils-parent directory.
To get a jar out of it use "mvn package" and get the jar from
utils-parent/utils-nestedset/target.
All the modifications and added code released under LGPL 2.1.
If you have any problems you can find me at #hibernate by nick reisi or comment on this
jira issue.
Hierarchical entity data management using 'modified preorder
tree traversal algorithm' (nested set trees)
----------------------------------------------------------------------------------------------------------
Key: HHH-1395
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1395
Project: Hibernate Core
Issue Type: New Feature
Components: core, query-hql
Environment: Hibernate 3.1 plus Annotations extending EJB3 implementation
Reporter: James Salt
Attachments: nestedset.tar.gz, utils-parent-20091117.tar.gz
Original Estimate: 3 weeks
Remaining Estimate: 3 weeks
An enhancement to allow entities to exist in a managed tree (DAG) structure, via the use
of property annotations and entity annotations. With an extension to the HQL language to
mimic the Oracle recusive query clause.
This would be classically be useful for Bill of Material uses, or any tree like entity
structure.
I have implemented a homebrew approach using the 'adjacency list method' , and a
post persist call back method to set the node path. Although I think a more full blown
optimised algorithm would be the 'modified preorder tree traversal algorithm'.
In the annotations world this could be implemented using an annotation like @Hierarchical
to the entity, with a @Parent (mask for @ManyToOne) annotation on the parent
field/parameter and @Children (mask for @OneToMany) annotation on the list of children
entities.
Then a postupdate method could be implemented for the entity type, that recalculates the
tree meta data -i.e. parent, left and right.
I believe this would be a valuable extension (useful for many common data models) to the
hibernate core product that could be exposed through annotations as I have discussed and
the hbm.xml.
The users of such a system would be aware of the performance implications on
insert/update/delete, but gain a massive performance gain on querying a tree data model.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: