gpt4 book ai didi

spring - 如何将 JpaTemplate 的使用从 Spring 3.2 迁移到 4.1.4?

转载 作者:行者123 更新时间:2023-12-04 21:12:23 25 4
gpt4 key购买 nike

我们目前已配置并运行 Spring 3.2.9.RELEASE(几年),需要迁移到 4.1.4.RELEASE。我们有一个抽象的 DAO 类,它扩展了 org.springframework.orm.jpa.support.JpaDaoSupport以及其他引用:

  • org.springframework.orm.jpa.JpaCallback
  • org.springframework.orm.jpa.JpaTemplate

  • 我看过 JpaDaoSupport已在 Spring 4 中删除。我已删除对 Jpa* 类的引用并替换为
    @PersistenceContext 
    protected EntityManager theEntityManager;

    以及在 findByNamedParams() 中找到的 DAO 中的方法引用(如 JpaDaoSupport ) ,并复制到我们的 DAO 中。

    进行上述更改后,我们可以编译我们的代码,但是在运行 JUnit 测试时,我们的 applicationContext-test.xml 中有一个引用。的
    <bean id="jpaTemplate" class="org.springframework.orm.jpa.JpaTemplate">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    <bean id="abstractDAO" abstract="true" class="my.company.package.AbstractDAO">
    <property name="jpaTemplate" ref="jpaTemplate" />
    </bean>

    <bean id="genericDAO" parent="abstractDAO" class="my.company.package.GenericDAO" />
    <bean id="securityDAO" parent="abstractDAO" class="my.company.package.SecurityDAOImpl" />

    基本上错误是没有 org.springframework.orm.jpa.JpaTemplate 的类引用.我们如何替换这个 JpaTemplate Spring 4.1.4 的配置?

    请注意,我选择了这段代码,并不是最初配置系统的人。我对 Spring 及其配置设置也很陌生。

    最佳答案

  • 确保 AbstractDAO迁移到 EntityManager API 和用途 @PersistenceContext在注入(inject)点(通常是二传手)。
  • 使用 <context:annotation-config /> 启用注释配置或配置 PersistenceAnnotationBeanPostProcessor启用 EntityManager 的注入(inject)进入 DAO。你可以去掉 AbstractDAO 的 bean 定义。完全。请注意,如果您有 <context:component-scan />在某处激活,这应该已经可以开箱即用了。

  • PS:如果您仍然要迁移,您可能要考虑立即升级到 Spring 4.2。如果这不是一个选项,请使用最新的 Spring 4.1 版本(撰写本文时为 4.1.7)。

    关于spring - 如何将 JpaTemplate 的使用从 Spring 3.2 迁移到 4.1.4?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31925138/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com