Am I supposed to call EntityManager.clear() often to avoid memory leaks?

后端 未结 3 1113
滥情空心
滥情空心 2021-01-12 03:39

I\'m new to JPA/OpenJPA and I noticed that if I don\'t call EntityManager.clear() after i persist entities I get an OutOfMemoryError (I keep adding

相关标签:
3条回答
  • 2021-01-12 04:26

    I don't have much experience with JPA. However this'll be useful -
    In JPA you must either:
    - Create a new EntityManager for each transaction.
    - Call clear() after each transaction to clear the persistence context.

    0 讨论(0)
  • 2021-01-12 04:29

    It sounds like there is something wrong somewhere, in your design. Usually, the entity gets detached once it is outside the scope of entity manager. And thats one of the reason you can't lazy load relations, outside the scope.

    As far as my experience is concerned, I seldom used em.clear(), if ever. I used Hibernate implementation, and Toplink Essentials. No experience with OpenJPA, yet.

    0 讨论(0)
  • 2021-01-12 04:32

    Depends how many objects you bring into the persistence process (read). If you handle large numbers (or some of the objects are large) then use of clear() can make sense. Each time an object is read it should be put in the L1 cache by the JPA impl.

    0 讨论(0)
提交回复
热议问题