JPA所有对象仍保存在EntityManager中

时间:2013-11-18 10:19:56

标签: java spring jpa

我有一个使用Spring数据创建的Web应用程序,它在使用JpaRepository(org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean与org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter)之后,在一些服务器正常运行时间后我注意到堆正在增长一直以来。

在进行堆转储后,它显示堆中包含的实体比我当前使用的实体多得多。

所以我的问题是如何管理EntityManager以清除不再使用的实体?

这是jpa配置:

                                   

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" p:database="${jdbc.databaseType}"
              p:generateDdl="true" p:showSql="false"/>
    </property>
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.enable_lazy_load_no_trans">true</prop>
            <prop key="hibernate.ejb.naming_strategy">com.example.db.repository.FixedDefaultComponentSafeNamingStrategy</prop>

            <prop key="hibernate.connection.CharSet">utf8</prop>
            <prop key="hibernate.connection.characterEncoding">utf8</prop>
            <prop key="hibernate.connection.useUnicode">true</prop>
        </props>
    </property>
</bean>

<bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager" p:entityManagerFactory-ref="entityManagerFactory">
    <property name="jpaDialect">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/>
    </property>
</bean>

0 个答案:

没有答案