Я давно работаю с моделью данных.Теперь я считаю, что модель несовершенна, но я не знаю, как ее улучшить.
В основном моя модель домена - - небольшой рекламный сайт для родителей, которые ищут нянек / нянь и детей, которые ищут детей, чтобы ухаживать за ними .
Модель домена в настоящее время имеет базовый класс Account, который разделен на два класса ParentAccount и ChildminderAccount .У меня также есть базовый класс Advertising, который подклассируется тремя ChildminderAdtact , ParentToParentAdvertisment и ParentToChildminderAdtact классов.
Большинство атрибутов являются общими для подклассови поэтому находится в суперклассе.
Чтобы перечислить несколько различий между подклассами:
- У ChildminderAccount может быть прикреплен учебный план / резюме, а у ParentAccount - нет.
- ChildminderAccount дополнительно уточняется путем указания, является ли Childminder (универсальный) няней (специфическим) / BabySitter (специфическим) / и т.д.
Это означает, что подкласс ChildminderAccount имеет связи с другими таблицами, которых не имеет подкласс ParentAccount.
В настоящее время наследование реализуется слоем JPA с использованием стратегии Joined (см. JPAдокументация: @Inheritance(strategy=InheritanceType.JOINED)
) См. диаграмму.
С текущим проектом я столкнулся с рядом проблем:
- У меня возникают проблемы при выполнении операций, общих для базовых классов.
- Я часто сталкиваюсь с повторной реализацией методов для подклассов, у меня слишком много DAO.
Как я уже говорил выше, я не уверен, как улучшить дизайн: отказаться ливсе наследование (уровень БД) или стоит ли переходить на другую стратегию наследования ...
Любая подсказка приветствуется.