POJO с другими ссылками POJO - PullRequest
       5

POJO с другими ссылками POJO

6 голосов
/ 09 января 2010

Я работаю над API для доступа к данным, хранящимся в системе. Система содержит такие вещи, как люди, встречи и процедуры, связанные с этими встречами. Мое приложение будет только для чтения.

Я использую Spring w / RowMapper для создания таких объектов, как "Person", "Appointment" и "Procedure". У меня есть DAO для каждого элемента. (т.е.: PersonDAO.getById(), PersonDAO.getByName(), ..).

Проблема заключается в том, что Appointment имеет ссылку на Person объект. В объекте Person было бы неплохо иметь ссылку на назначения этого Person, но если я начну их загружать, это станет циклической ссылкой.

Итак, я полагаю, мой вопрос - правильный способ справиться с этим, просто поместите ссылки (идентификаторы) в POJO, а затем попросите бизнес-уровень (?) Просто сделать правильные вызовы для получения информации? Или это нормально, чтобы каким-то образом передавать ссылку на DAO в реальном POJO, чтобы я мог лениво загружать объекты объекта при ссылке? Но тогда как вы справляетесь с циклической ссылкой? Когда у меня есть Person, и я лениво загружаю все их встречи, с этими встречами также будет связан Человек. Когда я загружаю этот Person, он потенциально может иметь информацию о различиях от Person, для которого я загружаю встречи.

Person (объект x) ленивая загрузка -> назначения могут лениво загружаться Person (объект x ').

Поскольку Person могло измениться к тому времени, когда я лениво загружал их встречи. Мне действительно нужен объект Person в Appointment для ссылки на тот же объект Person.

Я поймал все на этом. Я знаю, что могу просто «заставить это работать», но я хочу попытаться найти хорошее решение. Я думал об использовании hibernate для этого, но подумал, что это действительно просто перебор. Может быть, это не так.

Ответы [ 2 ]

2 голосов
/ 09 января 2010

Вы описываете двунаправленную связь, для которой Hibernate имеет особую (и, как правило, очень хорошую) поддержку.

Читайте , как это сделать в документации.

Завершение этого вручную будет довольно сложным и подверженным ошибкам. Я бы не рекомендовал это. Используйте мощь инструментов ORM, таких как Hibernate, вот для чего они нужны.

0 голосов
/ 10 января 2010

Расширяя предложение об использовании Hibernate, я бы рекомендовал проверить поддержку аннотаций JPA, которую поддерживает Hibernate (я полагаю, что это часть спецификации J2EE). Вы можете аннотировать свои классы аннотацией @ManyToMany. Проверьте эти документы:

https://www.hibernate.org/397.html

...