博客网 >

最近使用JSF+Spring+OpenJPA框架开发,但是在使用spring提供的JpaTemplate进行查询时,如果数据量超过100条,查询效率就会明显降低。由于开始时使用JPA内部的双向关联,造成各实体内部关联过多,从而影响所有的操作,因此怀疑是因为JPA的关联关系所致。但是去掉关联关系后的效果不显著。

查找spring的相关配置,发现原来关于“transactionAttributes”有问题。原来的配置如下:

〈bean id=“baseTxProxy” lazy-init=“true”class=“org.springframework.transaction.interceptor.TransactionProxyFactoryBean” scope=“singleton” abstract=“true”〉
  〈property name=“transactionManager”〉
   〈ref local=“transactionManager” /〉
  〈/property〉
  〈property name=“transactionAttributes”〉
   〈props〉
    〈prop key=“register*”〉PROPAGATION_REQUIRED〈/prop〉
    〈prop key=“trade*”〉PROPAGATION_REQUIRED〈/prop〉
    〈prop key=“cancel*”〉PROPAGATION_REQUIRED〈/prop〉
    〈prop key=“save*”〉PROPAGATION_REQUIRED〈/prop〉
    〈prop key=“exe*”〉PROPAGATION_REQUIRED〈/prop〉
    〈prop key=“add*”〉PROPAGATION_REQUIRED〈/prop〉
    〈prop key=“persist*”〉PROPAGATION_REQUIRED〈/prop〉
    〈prop key=“remove*”〉PROPAGATION_REQUIRED〈/prop〉
    〈prop key=“del*”〉PROPAGATION_REQUIRED〈/prop〉
    〈prop key=“update*”〉PROPAGATION_REQUIRED〈/prop〉
    〈prop key=“gen*”〉PROPAGATION_REQUIRED〈/prop〉
    〈prop key=“finish*”〉PROPAGATION_REQUIRED〈/prop〉
    〈prop key=“get*”〉PROPAGATION_REQUIRED,readOnly〈/prop〉
    〈prop key=“find*”〉PROPAGATION_REQUIRED,readOnly〈/prop〉
    〈prop key=“query*”〉PROPAGATION_REQUIRED,readOnly〈/prop〉
    〈prop key=“select*”〉PROPAGATION_REQUIRED,readOnly〈/prop〉
    〈prop key=“is*”〉PROPAGATION_REQUIRED,readOnly〈/prop〉
   〈/props〉
  〈/property〉
 〈/bean〉

使用