[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1395?page=c...
]
Christian Bauer updated HHH-1395:
---------------------------------
Attachment: nestedset.tar.gz
For a project I'm working on I've implemented a nested set approach with
Hibernate.
The attached code is reusable and I'd welcome any feedback. Included is extensive
Javadoc and unit tests. Note that the code doesn't compile because:
- the packages are the packages of my project, change the path in the source
- the unit tests require my Seam testing infrastructure but can easily be adapted to a
different system
Recursive - Directed Acyclic graph (tree/parent-child ) entity
management using 'modified preorder tree traversal algorithm'
-----------------------------------------------------------------------------------------------------------------------------
Key: HHH-1395
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-1395
Project: Hibernate3
Issue Type: New Feature
Components: core, query-hql
Environment: Hibernate 3.1 plus Annotations extending EJB3 implementation
Reporter: James Salt
Attachments: nestedset.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:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira