在文档中它说:“ JPA没有类似于Hibernate StatelessSession的概念,因此我们必须使用JPA规范提供的其他功能。” - 这是什么意思? Hibernate是jpa impl之一,在这里有点困惑
例如,在使用我们拥有的jpa infra(实体/原始回购)的情况下,我们想使用它读取数据和写入数据。大多数示例都谈论文件读写,还有一些涉及jdbc光标阅读器。但是,由于我们正在使用休眠之类的其他功能,例如envers,因此我们希望使用与在线交易相同的jpa方式。我们正在使用带有Oracle的开箱即用的Spring Boot / JPA(休眠),并在开发人员的内存h2 db中使用它。
在产品中,我们使用oracle,我们拥有访问某些模式的用户,我们如何通知spring batch使用特定的模式创建表。现在有一段时间,同一应用程序将用于批处理和联机,因此,如果可能的话,我们不想使用第二个数据源和其他用户进行批处理。这不是所有人的基本要求吗?
良好的Spring批处理文档,也喜欢java / xml配置切换。
我们将springboot 2.x与批处理一起使用。
答案 0 :(得分:3)
- 在文档中它说:“ JPA没有类似于Hibernate StatelessSession的概念,因此我们必须使用JPA规范提供的其他功能。” -这是什么意思?
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.
- 我们希望使用与在线交易相同的jpa方式。
您可以对Web应用程序和批处理应用程序使用相同的DAO或存储库。例如,ItemWriterAdapter
使您可以将冬眠/ JPA DAO /存储库改编为项目编写器界面,并使用它来保留实体。
- 在产品中,我们使用oracle,我们拥有访问某些模式的用户,我们如何通知spring batch使用特定的模式创建表。现在有一段时间,同一应用程序将用于批处理和联机,因此,如果可能的话,我们不想使用第二个数据源和其他用户进行批处理。这不是所有人的基本要求吗?
您可以为Web应用程序和批处理应用程序使用相同的数据源。然后由您选择Spring Batch表的模式。我建议使用相同的架构,以便数据和元数据始终保持同步(例如,当Spring Batch事务失败时)。
希望这会有所帮助。