To expand slightly on daryl answer, Openfire’s DbConnectionManager does have support for transactions and they are used within Openfire but without going through the entire codebase it’s difficult to say if they’re used everywhere they should/could be. Of course, if knowing this piece of information is critical then you could always audit the Openfire code yourself; if you do, please report back your findings.