There's also the option of using a queue that's accessed by various threads
and a single thread with a single connection that actually talks with the
DB. I've been sucessfull with this aproach, at least in a very particular
and well defined scenario. As for reiventing the wheel, it's probably very
pointless and prone to erros like Andrew mentions. The DB has transactions,
they work well, use them to your advantage.
Andres