Звучит так, как будто вы должны связывать транзакции с обертками таблиц лучше, чем просто по потокам. IOW, вам нужно создать класс транзакции. Класс транзакции получает / освобождает соединения из / в пул соединений при открытии и закрытии транзакции.
Транзакция станет фабрикой для ваших оберток. Любая оболочка таблицы, созданная транзакцией, находится внутри транзакции, поскольку она не имеет доступа ни к какому соединению, кроме той, к которой относится транзакция.
Раздражает то, что все объекты не имеют доступа к мертвым объектам. Некоторая форма SmartPtr потребуется для обработки того, что происходит, когда транзакция фиксируется, но что-то пытается снова использовать оболочку таблицы.