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