eclipselinkでpersistence.xmlに複数のDB接続先(PersistenceUnit)を記述する
ざっくりですが、技術ネタを。タイトルの通り、eclipselinkでpersistence.xmlに複数のDB接続先(PersistenceUnit)を記述した話です。そのうちソースコードも書くかも。
構成
今回、DB構成がマスター・スレーブみたいな構成で、処理によってDB接続先を変えてみるということを行いました。以下みたいな感じ。
・参照のみの処理 ⇒ スレーブへ接続
・更新含む処理 ⇒ マスターへ接続
上記の関係なので、それぞれのDBには同じテーブルが定義されています。
persistence.xmlについて
普通にpersistenceUnitを複数記述しました。classタグでエンティティのクラスを記述しますが、このファイルではそれぞれのpersistenceUnitに記述しました。あと、それぞれjdbcのurlを接続したい内容で記述します。
pom.xmlについて
dependencyに、org.eclipse.persistence.jpa.modelgen.processorを指定するとメタモデルが自動で生成されますが、上記のように複数のpersistenceUnitを記述するとエラーになりました。
なので、pluginを記述してメタモデルを生成して、そこでunitを指定する形にしました。
↓pluginの参考
↓unit指定の参考
EntityManagerFactoryについて
上記で複数のPersistenceUnitは定義済ですので、分岐を追加するなりしてcreate()で指定するunit名を適宜変更する形で実装しました。
以上で今のところ期待通りには動いている。。。