Оцените идею и реализацию
В программе используется иерархическая БД, для хранения данных о датчиках прикрепляемых к пациенту:

Чтобы проще было представить
Программ изначально писалась второпях, и на текущей момент sql запросы раскинуты по всей программе. Сейчас возникла идея создать компонени для работы с данной БД, который позволил бы как минимум абстрагироваться от используемой БД, а как максимум вообще забыть о способе хранения данной иерархии.
Каждая запись бд имеет свой id, а также id родительского элемента (кроме элементов верхнего уровня)
Для удобной работы с данной бд созданы следующие классы:
Соответственно три уровня иерархии представлены классами: Person, Session, Place имеющими общего предка DBRecord. Троеточиями ибозначены поля классов, которые в данном случае не интересны (например для Person это имя, фамилия)
Класс Saver инкапсулирует работу с БД и может быть заменен при переходе на другую БД. Saver может быть дополнен методами для выборки объектов из БД по каким-то другим значениям.
Объекты SessionCollection и PlaceCollection создаются и заполняются объектами при первом обращении к соответствующим полям Sessions и Places классов Person и Session. При добавлении и удалении объектов в этих коллекциях производятся синхронные действия с БД. А каждый объект типа DBRecord имеет метод Save, который сохраняет себя в БД.
Если объекты Session и Place были получены из коллекций SessionCollection и PlaceCollection соответственно, то их поля Person и Session ссылаются на уже существующие объекты. Если же они были получены непосредственно от Saver, то при обращении к данным полям объекты запрашиваются из БД с помощью Saver.
На текущий момент все описанное реализовано, разве что полноценное тестирование сложно устроить. В конечную программу не включено. Код получился достаточно красивым и компактным. Пользоваться достаточно удобно и интуитивно понятно. Единственное что меня беспокоит, а не перемудрил ли я? Ну и может кто предложит что-то лучшее.