Hi,

Before releasing IMAP, I propose the following for JPA:

1. JAMES ships with openjpa but is open to other JPA providers via the <provider/> tag: - org.apache.openjpa.persistence.PersistenceProviderImpl for openjpa (the standard)
- org.hibernate.ejb.HibernatePersistence for hibernate
- org.eclipse.persistence.jpa.PersistenceProvider for eclipselink

2. We add @ElementJoinColumn(name="MESSAGE_ID") on JPAProperty and JPAHeader in the AbstractJPAMessage (org.apache.openjpa.persistence.jdbc.ElementJoinColumn) to avoid intermediate tables.

3. We implement @Index (org.apache.openjpa.persistence.jdbc.Index) where needed to increase performance. This will be critical for large (and not so large) mailboxes.

4. The majority of the classes will use openjpa classes: instead of moving them all to org.apache.james.imap.jpa.mail.model.openjpa package, we leave them and we rename this package to org.apache.james.imap.jpa.mail.model.streaming to reflect that it goes on "streaming the blobs".

The definition of an alternate JPA provider should not clash with the proprietary extensions (still need to test it).
What's your opinion on this?

Tks,

Eric


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to