Не понимаю, понимаю ли я TransactionAwarePersistenceManagerFactoryProxy

Я пытаюсь использовать org.springframework.orm.jdo.TransactionAwarePersistenceManagerFactoryProxy в моем проекте Spring, но я не уверен, как его использовать или это именно то, что я ищу. Я понимаю, что это может помочь заставить мои DAO работать с простым JDO PersistenceManagerFactory. Другой вопрос: что произойдет, если прокси-сервер не будет создан правильно? Могу ли я использовать его для доступа к factory для создания диспетчера сохранения транзакций? Если объект, управляемый factory, является одноэлементным, это что-то меняет? Почему бы просто не получить доступ к PersistenceManagerFactory напрямую? Может быть, PersistenceManagerFactoryUtils.getPersistenceManager больше подходит для моих нужд? Может getObject вернуть null?

Ответ 1

Ответы доступны непосредственно в документации

Я понимаю, что это может помочь заставить мои DAO работать с простым JDO PersistenceManagerFactory.

Да. Прокси TransactionAwarePersistenceManagerFactoryProxy позволяет DAO работать с простой ссылкой JDO PersistenceManagerFactory, все еще участвуя в управлении ресурсами и транзакциями Spring (или J2EE-сервера). Вы можете использовать его в своем приложении. Но, не зная ваших конкретных потребностей, мы больше не можем подтвердить.

Могу ли я использовать его для доступа к моему factory для создания диспетчера сохраняемых транзакций

DAO могут легко переключаться между JNDI PersistenceManagerFactory и этим прокси для локального PersistenceManagerFactory.

Если объект, управляемый factory, является одиночным, это меняет ситуацию? Почему бы просто не получить доступ к PersistenceManagerFactory напрямую?

Обычно желательно записывать DAO на основе JDO с помощью Spring JdoTemplate, предлагая такие преимущества, как последовательные исключения доступа к данным, а не JDOExceptions на уровне DAO. Однако управление ресурсами и транзакциями Spring (и Injection Dependency) будет работать для DAO, написанных против простого JDO API.