コンパイル言語の宿命
Spring Bootに限らずJava等コンパイル言語の宿命ですが、ちょっとした変更でもいちいちコンパイルが必要になりますよね。
そうして開発効率の悪さを感じてしまいます。
※もちろんコンパイル言語は実行時のパフォーマンスに安定感があるものが多いのでメリットもたくさんあります。
そんな中でもSpring Bootではhibernateのあたりで時間がかかることがよくあります。
Initialized JPA EntityManagerFactory for persistence unit ‘default’
Spring Bootの起動で時間がかかるのは以下の処理の時ではありませんか?
Initialized JPA EntityManagerFactory for persistence unit ‘default’
色々調べた結果、application.ymlのhibernateの設定で以下のようにtempやdirectを入れれば改善されたとの記事を読んだのですが、、、
jpa: properties: hibernate: temp: use_jdbc_metadata_defaults: false dialect: org.hibernate.dialect.MySQLDialect
MySQLの接続に関わるJDBCの設定に関する変更になるのですが、
正直自分の環境では変化がありませんでした。
ただ元々ここの処理にかかってた時間が9秒前後だったので、
サンプルとしては物足りなかったかもしれません。
もうすこし時間がかかるようになったら再度やってみようと思います。
ちなみに、以下の設定を入れただけではエラーが出てしまいます。
temp: use_jdbc_metadata_defaults: false
こんな感じのエラーが。
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
同時に以下の記述も忘れずに入れましょう。
dialect: org.hibernate.dialect.MySQLDialect
他の試行錯誤
ちなみに僕の環境の場合はIDEから実行させず、ターミナルから直接コマンド打って実行させた方が起動が早かったりするので(数秒ですが)、そういった工夫で開発効率の悪化を防ぐように努めています。