私の状況は次のとおりです。
- コードは私のものではありません
- 2 種類のデータベースがあります。1 つはお父さん、もう 1 つは息子です。
- Dad には、JNDI 名を格納するテーブルがあります。JNDI を使用してお父さんを検索し、エンティティ マネージャーを作成して、このテーブルを取得します。
- これらの取得した JNDI 名から、複数の Son データベースを使用して複数のエンティティ マネージャーを作成します。
問題は:
- Son には何千ものエンティティがあります。すべてのエンティティをロードするには、各 Son データベースに約 10 分かかります。Son データベースが 4 つある場合、40 分になります。
私の質問:
- 既にエンティティ マネージャーを作成しているとします (すぐに使用できます)。その後、これらのエンティティ マネージャーの作成を高速化する方法はありますか (接続のみが異なります)。
Son JNDIごとに以下のコードを見てください。
Map<String, String> puSonProperties = new HashMap<String, String>();
puSonProperties.put("javax.persistence.jtaDataSource", sonJndi);
EntityManagerFactory emf = Persistence.createEntityManagerFactory("PUSon", puSonProperties);
PUSon - すべて同じ永続ユニットを使用
log.info("Verify entity manager for son: {0} - {1}", sonCode,
emSon.find(Son_configuration.class, 0) != null ? "ok" : "failed!");
これは、すべてのエンティティの読み込みが開始されると推測される実際のコードです。10分。