I’m looking at using Apache Jackrabbit for a personal project but would like to know what are the advantageous/disadvantageous to using it versus a custom content repository or traditional database with content stored in the file system.
I’m not sure that I like the tree structure of the JCR so if you can explain the design decisions (adv/dis) behind that it would also help.
There are several benefits to using an existing JCR implementation, such as Jackrabbit or ModeShape. First and foremost, you immediately get lot of functionality for free:
If some of these features are important to you, then you should definitely consider reusing an existing implementation rather than rolling your own – otherwise you’ll be spending all your time implementing these kinds of features.
However, if none of these features fits your use case, then you should consider other data storage technologies:
Other things to consider are whether you need or want an eventually-consistent database or a strongly-consistent database. It’s far easier to write many “conventional” applications against strongly-consistent databases, and in fact most JCR repositories (including Jackrabbit and ModeShape) are strongly-consistent.