Swing
統合のためにライブラリを拡張JPA
し、構成JPA
を可能な限り自動化 (および移植可能) することで拡張しようとしています。これは、プログラムで<class>
要素を追加することを意味します。AnnotationConfiguration
(HibernateまたはEclipseLinkを介して実行できることはわかっていますがServerSession
、移植性があります)。Spring
また、この単一の目的のためだけに使用することも避けたいと思います。
その場でを作成し、指定したパッケージの要素を (Reflections ライブラリ経由で)persistence.xml
埋めることができます。これをプロバイダー<class>
にフィードしようとすると、問題が発生します。私が考えることができる唯一の方法は を設定することですが、有効な. ( )経由でファイルを提供するためのソケットを設定するようです...わかりません、悪ですか?persistence.xml
JPA
URLClassLoader
URL
URL
localhost:xxxx
この問題を解決する方法を知っている人はいますか? 1 つのライブラリを使用しないようにするのは大変な作業のように思えますが、それが可能かどうかを知りたいだけです。
編集(より明確にするための試み):
動的に生成されたものはオブジェクトXML
に保持されString
ます。永続化プロバイダで利用できるようにする方法がわかりません。また、ファイルをディスクに書き込まないようにしたい。
私の問題の目的のために、永続化プロバイダーは、クラスパスをスキャンしてMETA-INF/persistence.xml
. 一部の実装では、 の動的な作成を受け入れるように作成できますがXML
、共通のインターフェイスはありません (特に、ファイルの重要な部分である<class>
タグ)。
私の考えは、カスタムを設定するClassLoader
ことです-他に何かあれば、私は感謝します.私はこれに設定していません.
私が見つけた唯一の簡単に拡張/構成可能なものはURLClassLoader
. それはURL
オブジェクトで機能しますが、最初に実際に XML をディスクに書き込まずにオブジェクトを作成できるかどうかはわかりません。
それが私が物事を設定する方法ですが、persistenceXmlFile = new File("META-INF/persistence.xml")
ディスクに書き込むことで機能しています:
Thread.currentThread().setContextClassLoader(
new URLResourceClassLoader(
new URL[] { persistenceXmlFile.toURI().toURL() },
Thread.currentThread().getContextClassLoader()
)
);
URLResourceClassLoader
isURLCLassLoader
のサブクラスであり、 をオーバーライドすることで、クラスだけでなくリソースも検索できますpublic Enumeration<URL> findResources(String name)
。