Spring batch Spring批处理jpa和模式问题

Spring batch Spring批处理jpa和模式问题,spring-batch,Spring Batch,在文档中,它说“JPA没有一个类似于Hibernate会话的概念,所以我们必须使用JPA规范提供的其他特性。”-这是什么意思?Hibernate是jpa impl中的一个,这里有点混乱 例如,我们使用我们拥有的jpa infra(实体/crud回购),我们希望使用它来读取数据和写入数据。大多数示例都讨论了文件读写,还有一些示例讨论了jdbc游标读取器。但由于我们使用了hibernate的其他特性,比如envers,我们希望使用与在线事务相同的jpa方式。我们将SpringBoot/jpa(hib

在文档中,它说“JPA没有一个类似于Hibernate会话的概念,所以我们必须使用JPA规范提供的其他特性。”-这是什么意思?Hibernate是jpa impl中的一个,这里有点混乱

  • 例如,我们使用我们拥有的jpa infra(实体/crud回购),我们希望使用它来读取数据和写入数据。大多数示例都讨论了文件读写,还有一些示例讨论了jdbc游标读取器。但由于我们使用了hibernate的其他特性,比如envers,我们希望使用与在线事务相同的jpa方式。我们将SpringBoot/jpa(hibernate)开箱即用地用于oracle和内存中的H2DB for dev

  • 在prod中,我们使用oracle,用户可以访问一些模式,如何通知SpringBatch使用特定模式创建表。现在一段时间内,同一个应用程序将用于批处理和联机,所以如果可能的话,我们不想使用第二个数据源和不同的用户进行批处理。这不是所有人的基本要求吗

  • 很好的spring批处理文档,还喜欢java/xml配置切换

    我们在批处理中使用springboot 2.x

  • 在文档中,它说“JPA没有一个类似于Hibernate会话的概念,所以我们必须使用JPA规范提供的其他特性。”-这是什么意思
  • JPA中Hibernate
    会话
    API的直接等价物是
    EntityManager
    。因此,这仅仅意味着JPA中没有类似于
    无状态EntityManager
    的API,我们需要找到一种方法,仅使用JPA API实现相同的功能,这在同一节中进行了解释:
    读取每个页面后,实体被分离,持久性上下文被清除,允许在处理页面后对实体进行垃圾收集。

  • 我们希望使用与在线交易相同的jpa方式
  • 您可以为web应用程序和批处理应用程序使用相同的DAO或存储库。例如,
    ItemWriterAdapter
    允许您将hibernate/JPA DAO/存储库调整到item writer接口,并使用它来持久化实体

  • 在prod中,我们使用oracle,用户可以访问一些模式,如何通知SpringBatch使用特定模式创建表。现在一段时间内,同一个应用程序将用于批处理和联机,所以如果可能的话,我们不想使用第二个数据源和不同的用户进行批处理。这不是所有人的基本要求吗
  • 您可以为web应用和批处理应用使用相同的数据源。然后由您选择Spring批处理表的模式。我建议使用相同的模式,以便数据和元数据始终保持同步(例如,当Spring批处理事务失败时)

    希望这有帮助

  • 在文档中,它说“JPA没有一个类似于Hibernate会话的概念,所以我们必须使用JPA规范提供的其他特性。”-这是什么意思
  • JPA中Hibernate
    会话
    API的直接等价物是
    EntityManager
    。因此,这仅仅意味着JPA中没有类似于
    无状态EntityManager
    的API,我们需要找到一种方法,仅使用JPA API实现相同的功能,这在同一节中进行了解释:
    读取每个页面后,实体被分离,持久性上下文被清除,允许在处理页面后对实体进行垃圾收集。

  • 我们希望使用与在线交易相同的jpa方式
  • 您可以为web应用程序和批处理应用程序使用相同的DAO或存储库。例如,
    ItemWriterAdapter
    允许您将hibernate/JPA DAO/存储库调整到item writer接口,并使用它来持久化实体

  • 在prod中,我们使用oracle,用户可以访问一些模式,如何通知SpringBatch使用特定模式创建表。现在一段时间内,同一个应用程序将用于批处理和联机,所以如果可能的话,我们不想使用第二个数据源和不同的用户进行批处理。这不是所有人的基本要求吗
  • 您可以为web应用和批处理应用使用相同的数据源。然后由您选择Spring批处理表的模式。我建议使用相同的模式,以便数据和元数据始终保持同步(例如,当Spring批处理事务失败时)


    希望这有帮助。

    您知道Spring Batch的基本知识吗?您可以将EntityManger注入ItemReader或ItemWriter中。你能试着更准确地问一下你需要知道什么吗。谢谢。你知道Spring Batch的基本知识吗?您可以将EntityManger注入ItemReader或ItemWriter中。你能试着更准确地问一下你需要知道什么吗。谢谢,谢谢。在回答#3中,我试图找到一种方法来通知spring batch使用特定的模式,但找不到方法。它只是在默认模式中创建。您说过您使用spring引导,所以您可以在
    spring.datasource.url
    属性中指定模式。这里的官方文件中有一个例子:。是的。让我再次解释一下,在我们的应用程序中,我们有一个数据源,用于从多个oracle表中读取驻留在多个oracle模式中的数据。我们的实体用schema属性进行注释,这样我们就可以告诉它在该schema中创建表。但是对于SpringBatch,我们如何要求它在schemx中创建SpringBatch表,因为我们没有控制权。或者说,我可以在schemax中预先创建spring批处理表,但我们可以再次告知spring批处理如何使用这些表。spring批处理不知道模式,它配置了一个数据源。由您使用所需的模式配置该数据源。例如,如果使用
    spring配置数据源