The current persistent manager implementations are not very performant.
There are a number of reasons for this, but most of it is down to a simple
implementation that aims at correctness rather than speed.
1) Use of JTA transaction in jdbc2 is unnecessary - a local jdbc transaction
i.e. setAutoCommit(false) is enough
2) Make use of bulk writes to the db - e.g. for transactional sessions, but
also to relax the requirement that messages are persisted on each send
where this is less important for the application.
3) Lazily write the transaction record - it is only necessary when there are
actually persistent messages in the transaction.
4) Improve the sql - db indexes, etc.
5) Other optimizations in the persistence architecture
jdbc3 is an attempt to reduce the cloning of messages for topics
this could be taken further with a more dedicated message store.