田中ブログ

さいたまに住んでいる男です。仕事はSESでプログラムを書いてることが多いです。聖地巡礼、日々の生活、技術的なことを書いていこうと思います。

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の参考

stackoverflow.com

↓unit指定の参考

stackoverflow.com

EntityManagerFactoryについて

上記で複数のPersistenceUnitは定義済ですので、分岐を追加するなりしてcreate()で指定するunit名を適宜変更する形で実装しました。

 

以上で今のところ期待通りには動いている。。。