Spring批处理JPA和架构问题

时间:2018-10-30 11:14:47

标签: spring-batch

  1. 在文档中它说:“ JPA没有类似于Hibernate StatelessSession的概念,因此我们必须使用JPA规范提供的其他功能。” - 这是什么意思? Hibernate是jpa impl之一,在这里有点困惑

    1. 例如,在使用我们拥有的jpa infra(实体/原始回购)的情况下,我们想使用它读取数据和写入数据。大多数示例都谈论文件读写,还有一些涉及jdbc光标阅读器。但是,由于我们正在使用休眠之类的其他功能,例如envers,因此我们希望使用与在线交易相同的jpa方式。我们正在使用带有Oracle的开箱即用的Spring Boot / JPA(休眠),并在开发人员的内存h2 db中使用它。

    2. 在产品中,我们使用oracle,我们拥有访问某些模式的用户,我们如何通知spring batch使用特定的模式创建表。现在有一段时间,同一应用程序将用于批处理和联机,因此,如果可能的话,我们不想使用第二个数据源和其他用户进行批处理。这不是所有人的基本要求吗?

良好的Spring批处理文档,也喜欢java / xml配置切换。

我们将springboot 2.x与批处理一起使用。

1 个答案:

答案 0 :(得分:3)

  
      
  1. 在文档中它说:“ JPA没有类似于Hibernate StatelessSession的概念,因此我们必须使用JPA规范提供的其他功能。” -这是什么意思?
  2.   

JPA中的Hibernate Session API的直接等效项是EntityManager。因此,这仅表示JPA中没有像StatelessEntityManager这样的API,我们需要找到一种仅使用JPA API实现相同功能的方法,这在同一部分中进行了解释:After each page is read, the entities become detached and the persistence context is cleared, to allow the entities to be garbage collected once the page is processed.

  
      
  1. 我们希望使用与在线交易相同的jpa方式。
  2.   

您可以对Web应用程序和批处理应用程序使用相同的DAO或存储库。例如,ItemWriterAdapter使您可以将冬眠/ JPA DAO /存储库改编为项目编写器界面,并使用它来保留实体。

  
      
  1. 在产品中,我们使用oracle,我们拥有访问某些模式的用户,我们如何通知spring batch使用特定的模式创建表。现在有一段时间,同一应用程序将用于批处理和联机,因此,如果可能的话,我们不想使用第二个数据源和其他用户进行批处理。这不是所有人的基本要求吗?
  2.   

您可以为Web应用程序和批处理应用程序使用相同的数据源。然后由您选择Spring Batch表的模式。我建议使用相同的架构,以便数据和元数据始终保持同步(例如,当Spring Batch事务失败时)。

希望这会有所帮助。