Hi there, i am building a CMS and i am studying the possibility to integrate a JSR 170 implementation (Apache Jackrabbit).
For a new application built from scratch (no persisted data yet) Apache Jackrabbit is an excellent solution. But if i want to integrate a JSR 170 implementation to an existing application (website) that already use a database and has its own schema definition (MySQL for example), how i can integrate the whole thing?
I already tested Jackrabbit on a simple application using the SimpleDbPersistenceManager and the data populated in a MySQL database is a 2 columns record (property name and content). I mean if i have a person entity composed of a first name, last name and age fields, the SimpleDbPersistenceManager with persist the entity in the database with 3 rows of 2 colums each. 1 row for first name, another for lastname and another one for age. This way of structuring the data in the database is not really conventional with current table structures in databases.
So if i have a table in my database named person that have 3 columns : first name , last name and age, how do i integrate this persistant structure to be used by JSR 170?
I hope i am clear ?!
First please note JCR is a specification for API to access a repository.
You can develop a JCR Level 1 Repository on your tables for accessing those data.
Most JCR implementations are not developed to map your tables into JCR API
They work just the other way, they map JCR tree nodes to tables and possibly other persistence mechanism.
If you are using jackrabbit you must develop your own persistence manager, although jackrabbit is not
Mostly JSR 170 has own database layer. It's a subject of discussion sure but integration of an existing database can be more difficult by some reasons. First and most often it's a database with 'bad' structure (e.g. no third normal form).
I'm work with eXo JCR implementation (www.exoplatform.org). And I can say that we have plans to do storage plugin to user-specific database (avg in v.1.2-1.3). This solution will be helpful for some portion of user data, but not for whole JCR repository in user database.
Also we have a idea for export/import from user database plugin (higher 1.3 version).
Currently you can use XML export/import for porting data from/to repository.