Spring + Spring Data JPA 配置

标签 spring jakarta-ee persistence spring-data spring-data-jpa

目前我正在玩 Spring 设置。我的目标是使用 JPA 访问使用其 JNDI 名称的 Websphere 数据源。我正在使用 Spring Data JPA 让我的生活更轻松,并通过一些教程来了解基本概念。

坏事:这些都不是在谈论我的 JPA 场景的 Spring 配置 + 我以前从未使用过 JPA/JDBC。 所以我希望你能在这里帮助我。我有 2 个配置文件:

applicationContext.xml

<bean id="txManager"
    class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="txManager" />

<bean id="eManager" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"></bean>

由于我在我的代码中使用@Transactual 注释,因此我正在为 txManager 使用注释驱动标签。我只是不确定我应该为 txManager 配置什么以及 sessionFactory 标签在做什么。是否有所有支持的 XML 标签的文档?我是否缺少我的场景的重要标签?

eManager 也是如此——不确定这是否正确。

persistence.xml

<persistence version="1.0"
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    <persistence-unit name="spring-jpa">
        <jta-data-source>jdbc/myJNDI</jta-data-source>
    </persistence-unit>
</persistence>

同样的事情:我真的不知道我在做什么。我知道我需要一个持久性单元/提供者。我知道很多人为此使用休眠,但如果可能的话,我想保持原生并使用纯 JavaEE/Spring。 我只是不确定如何配置它。 目前我的项目正在崩溃,告诉我:“JPA PersistenceProvider 返回 null”

最佳答案

最好的方法是获取EntityManagerFactory通过 Spring 的 JNDI 支持从 JNDI:

<jee:jndi-lookup id="entityManagerFactory" jndi-name="persistence/myPersistenceUnit" />

<jpa:repositories base-package="com.acme.repositories" />

<tx:jta-transactionManager />

这将导致应用服务器也使用事务管理器。您也可以尝试设置 JpaTransactionManager并连接EntityManagerFactory从 JNDI 获取到它。如果您只通过 <jee:jndi-lookup /> 查找数据源,则可以将更多配置放入 Spring 配置文件中。命名空间元素并遵循 Spring Data JPA 引用文档中的进一步配置说明。不过,如果您决定使用容器资源,通常最好使用您实际可以获得的容器资源。

关于Spring + Spring Data JPA 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10392307/

相关文章:

java - 进行多对多时如何添加到一组实体

java - Websphere Runtime事务超时问题

java - 如何在不同的上下文中使用多个属性占位符

java - 从 java web 应用程序启动很长的后台进程的最佳方法是什么?

java - 如何将数据从 JSF 传递到 Java Applet

ruby - 是否有适用于 Ruby 的对象数据库?

iphone - 如何使用 Xcode iPhone Simulator 测试持久内存

java - Q : hibernate spring transaction is synchronized ? 如果没有,我如何更新数据库安全线程?

java - 在什么条件下调用 ELResolver 的 setValue 方法?