Spring BootとJPAで複数データベースを扱う実装方法




どうも高妻です。Twitterでもプログラミングのことや暗号通貨のことをつぶやいているのでよかったら覗きにきてください。  

複数データベースを扱う方法

Spring BootとJPAで1つのデータベースを扱うのはサンプルも豊富なので簡単ですが、複数となると一気にサンプルが減り、なかなか実現するのが大変でした。なので、MySQLとPostgreSQLの2つに接続できる設定と実装方法を紹介します。

application.properties

application.propertiesに2つのデータベースへの接続設定を記載します。

接続処理

まずMySQLの接続処理を行うクラスです。

 

次にPostgreSQLです。

違いは2箇所で、MySQLの方に@Primaryをつけているのと、PostgreSQLの方はPropertiesを使ってdialectを指定しています。

@ConfigurationPropertiesにapplication.propertiesに設定した各データベース設定のルートパスを指定すると同名のメンバ変数に値を代入することができます。

@EnableJpaRepositoriesにはrepositoryのパッケージ名とEntityManagerFactoryのBean名を設定します。

MySQLとPostgreSQLのEntityとRepositoryは上記設定を行いやすくするためにも分けるようにしておいてください。

また、PostgreSQLのDriverを変更するだけでAWS Redshiftも扱えるようになります。下記リンクを参考にしてみてください。

GradleでRedshift JDBC Driverの取得と設定方法

使用方法

カスタムインターフェースを実装するときのみ変更が必要になります。カスタムインターフェースの実装方法は下記リンクを参照してください。

Spring Data JPAでカスタムRepositoryインターフェースを実装する方法

設定箇所が少し多いですが上記を参考に実装していただければと思います。

最後にSpring Boot関連の記事を以下にまとめましたのでこちらも是非読んでください。

おすすめ書籍

JPAに関しては下記パーフェクトJava EEが非常に詳しく書かれているのでぜひ読んでみてください。







コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です