web-dev-qa-db-ja.com

TransactionAwarePersistenceManagerFactoryProxyを理解しているかどうかわからない

Springプロジェクトでorg.springframework.orm.jdo.TransactionAwarePersistenceManagerFactoryProxyを使用しようとしていますが、使用方法や、それがまさに私が探しているものかどうかはわかりません。 DAOをプレーンなJDO PersistenceManagerFactoryで動作させるのに役立つことがわかっています。もう1つの質問は、プロキシが適切に作成されないとどうなりますか?引き続き、それを使用してファクトリにアクセスし、トランザクション対応の永続マネージャを作成できますか?ファクトリーによって管理されるオブジェクトがシングルトンである場合、これにより状況が変わりますか?なぜPersistenceManagerFactoryに直接アクセスしないのですか?おそらくPersistenceManagerFactoryUtils.getPersistenceManagerが私のニーズにより適しているでしょうか? getObjectはnullを返すことができますか?

189
megazord

回答は documentation で直接入手できます

DAOをプレーンなJDO PersistenceManagerFactoryで動作させるのに役立つことがわかります。

はい。 TransactionAwarePersistenceManagerFactoryProxyプロキシにより、DAOは、Spring(またはJ2EEサーバー)のリソースおよびトランザクション管理に参加しながら、プレーンなJDO PersistenceManagerFactory参照を操作できます。確実にアプリで使用できます。しかし、あなたの正確なニーズを知らなければ、これ以上確認することはできません。

それを使用してファクトリにアクセスし、トランザクション対応の永続性マネージャを作成できますか

DAOは、ローカルPersistenceManagerFactoryのJNDI PersistenceManagerFactoryとこのプロキシをシームレスに切り替えることができます。

ファクトリーによって管理されるオブジェクトがシングルトンである場合、これにより状況が変わりますか? PersistenceManagerFactoryに直接アクセスしないのはなぜですか?

通常、SpringのJdoTemplateを使用してJDOベースのDAOを記述することをお勧めします。これにより、DAOレイヤーでのJDOExceptionsの代わりに、一貫したデータアクセス例外などの利点が得られます。ただし、Springのリソースおよびトランザクション管理(および依存性注入)は、プレーンなJDO APIに対して記述されたDAOでも機能します。

20