В нашем устаревшем приложении Java EE есть классы классов значений (VO), которые обычно содержат только геттеры и сеттеры, возможно, equals()
и hashCode()
. Это (обычно) объекты, которые должны быть сохранены в хранилище постоянного хранения. (Для записи наше приложение не имеет EJB, хотя это может измениться в будущем - и мы используем Hibernate для сохранения наших объектов.) Вся бизнес-логика для управления данными в VO находится в отдельных классах (не EJB, а просто POJO). Мое мышление OO ненавидит это, так как я считаю, что операции над определенным классом должны находиться в том же классе. Поэтому у меня есть желание рефакторировать, чтобы переместить логику в соответствующие VO.
Я только что обсудил с коллегой, который гораздо более опытен в Java EE, чем я, и он подтвердил, что немые сущности, по крайней мере, были рекомендуемым способом. Тем не менее, он также недавно прочитал мнения, которые ставят под сомнение обоснованность этой позиции.
Я понимаю, что есть проблемы, которые по крайней мере ограничивают то, что может быть помещено внутри класса сущности:
- он не должен иметь прямую зависимость от уровня данных (например, код запроса должен переходить в отдельные DAO)
- если он напрямую открыт для более высоких уровней или для клиента (например, через SOAP), его интерфейс, возможно, потребуется ограничить
Есть ли более веские причины не, чтобы переместить логику в мои сущности? Или любые другие проблемы, которые необходимо учитывать?