SessionFactory
おそらくプールされた接続を使用して、データソースごとに作成するのが最善の方法だと思います-それが彼の答えで提案されている eqbridges です。
現在、Hibernate にはフックがあるため、現在の実行スレッドといくつかの追加パラメーターに応じて、さまざまなデータ ソースに s をConnectionProvider
返す実装を作成できると思います。Connection
理論的には、カスタム実装SessionFactory
によって提供される、異なるデータベースへの異なる接続を使用する 1 つのインスタンスを持つことができます。ConnectionProvider
しかし、SessionFactory
かなりの量のデータを保持し、そのデータは Hibernate によって内部で使用されSession
、作業単位のために が開かれます。さらに、それに関連付けられた第 2 レベルのキャッシュもあります。
残念ながら、ファクトリとSession
そこから開いた s が、そのようなプロバイダの前でどのように動作するかは誰にもわかりません。私にはハックのように感じますSessionFactory
.. あらゆる種類の、場合によっては非常に微妙なバグやデータの破損につながる可能性があります。
別の注意点として、複数作成する場合のコストを正確に測定しSessionFactories
てください。思ったほど高くないかもしれません。必要な JDBC 接続を開くだけのコストと比較してください。どのような結果が得られるかはわかりませんが、よりハックなソリューションに頼る前に、パフォーマンスについて確認する必要があると思います。