[Java][Framework] Spring BootのJPAでDB接続した際のEntityキャッシュのクリア方法
[概要]
Spring BootのJPAでDBアクセスした際に、処理を一定量こなすと、Heapが足りなくなってOutOfMemoryでコケる件でハマったので、解決法をメモ。
とはいっても単純でEntityManagerを持ってきて、クリアするだけ。
Hibernate初心者のわたくしにとっては、非常に難関でございました。
具体的には、以下のエラーがでたらの対象法になります。
[エラー内容]
java heap error
[対応]
EntityManagerを取得して、キャッシュをクリアするだけです。
最初は、どこかにメソッドインターフェースがあって、XXXX.getEntityManager()的なもので取得するのかなーと思っていましたが(古い)
案の定そんなものはなく、アノテーションを指定して、DIで取得する文化でした。
public class XxxxxLogic(){ // EntityManagerをDI @PersistenceContext EntityManager entityManager; public void xxxxEntityCacheClear(){ // cacheクリア entityManager.clear(); } ・・・・・ }
これだけです。簡単ですねー。
Entityを指定してクリアする方法もネットサーフィン(死語)してたらありましたが、1次キャッシュと2次キャッシュがあるらしく、参照が残ってしまっていて、うまくGC対象にならずOutOfMemoryが直らなかったので、まだわかってません。
わかったら追記しまっす。
スポンサードリンク
関連記事
-
[Java][Servlet][JSP] ServletからJSPへの転送
こんにちは。 今回は、「Servletでリクエストを受けて、JSPで表示する。」方法を解説しま
-
[Java][Spring] DIする方式を細かく見てみる① @ScopeでのSingletonとPrototypeの指定
今回は@Scopeアノテーションを用いて、オブジェクトをDIする方式を選択してみます。 ●解説
-
[Java] テキストファイルの読み込み方法
こんにちは、今回はテキストファイルをJavaで読む方法を紹介します。 標準で提供されているクラ
-
[Java] Apache POIでExcel操作!
Apache POIをまずは使ってみようという方(自分も含め)のメモ 導入 Maven htt
-
[Java] CSVファイルの読み込み方法
こんにちは、kei0310です。 CSVファイルをJavaに取り込む方法を解説します。
-
[java] 文字列の一部を切り取る方法(substring)
こんにちは。 今回は文字列の一部を切り取る方法について解説します。 具体的には、String
-
[Java] StringBuilderの使い方(Stringを連結するクラス)
今回は、可変長文字列クラスのStringBuilderを紹介します。 固定長文字列クラスのSt
-
[Java][Framework] Play Framework入門
今回は、Javaの比較的新しいWeb Frameworkである、Play Frameworkを試して
-
[Java][Jersey] JerseyでRESTfulなJAX-RS Webサービス作成
こんにちは、keiです。 今回はRESTfulなWeb Serviceの作成を行っていきます。
-
[Java] 日付の計算方法(DateFormat、Date、Calendar)
こんにちは、kei0310です。 Javaで日付を計算する方法について解説します。 まず