2012-04-13 11 views
0

JPAをHibernate 3とSpring 3.5で使用しています。 hibernate以外のバックエンドのデータベースで行われた変更(直接クエリによる)に対して、JPA /休止状態の更新を更新することはできません。 私はEHCacheと第2レベルのキャッシュを使用しています。キー設定項目は次のとおりです。私も、エンティティと対話するすべてのメソッドのために必須=伝播してJpaTransactionManagerを使用していますJPAにデータベースの変更をバックグラウンドで強制的に適用させます。

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
    <!-- key properties pulled from prop file -->   
    <property name="driverClass" value="${dataSource.driverClassName}"/> 
    <property name="jdbcUrl" value="${dataSource.url}"/> 
    <property name="user" value="${dataSource.username}"/> 
    <property name="password" value="${dataSource.password}"/> 
    <property name="maxPoolSize" value="50"/> 
    <property name="maxIdleTime" value="14400"/> 
    <property name="checkoutTimeout" value="5000"/> 
    <property name="idleConnectionTestPeriod" value="60"/> 
    <property name="preferredTestQuery" value="select 1"/> 
    <property name="maxAdministrativeTaskTime" value="300"/> 
    <property name="numHelperThreads" value="10"/> 
</bean> 

<!-- We are Using JPA --> 
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="persistenceXmlLocation" value="classpath:persistence.xml"/> 
    <property name="jpaProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.format_sql">true</prop> 
      <prop key="hibernate.use_sql_comments">false</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
      <prop key="hibernate.generate_statistics">true</prop> 
      <prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</prop> 
      <prop key="hibernate.cache.use_query_cache">true</prop> 
      <prop key="hibernate.cache.use_second_level_cache">true</prop> 
      <prop key="hibernate.cache.use_structured_entries">true</prop> 
      <prop key="hibernate.cache.generate_statistics">true</prop> 
     </props> 
    </property> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/> 
    </property> 
</bean> 

アドバイスをしてください。

答えて

0

"バックドア"でデータベースを変更すると、特にキャッシュでormを使用することと矛盾します。

私はこの状況を完全に回避しようとしますが(私はあなたがそれを必要としていることは知っていますが)。

ことコールドバックドアを使用して溶液:

  1. は休止状態を使用してアプリケーションに通知を送信します。
  2. この通知は、キャッシュの追い出しにつながります(おそらく、通知には、追い出されるキャッシュの部分についての情報が含まれている可能性があります)。
+0

このような場合は避けようとします。ありがとう – Supra

関連する問題