返回介绍

10.2. 配置

发布于 2023-09-17 23:40:35 字数 3177 浏览 0 评论 0 收藏 0

引擎必须引用EntityManagerFactory才能使用JPA实体,可以配置引用,或者配置持久化单元名(Persistence Unit Name)。引擎会自动检测用作变量的JPA实体,并按需处理。

下面的示例配置使用jpaPersistenceUnitName:

<bean
  class="org.flowable.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">

<!-- 数据库配置 -->
<property name="databaseSchemaUpdate" value="true" />
<property name="jdbcUrl" value="jdbc:h2:mem:JpaVariableTest;DB_CLOSE_DELAY=1000" />

<property name="jpaPersistenceUnitName" value="flowable-jpa-pu" />
<property name="jpaHandleTransaction" value="true" />
<property name="jpaCloseEntityManager" value="true" />

<!-- 作业执行器配置 -->
<property name="asyncExecutorActivate" value="false" />

<!-- 邮件服务器配置 -->
<property name="mailServerPort" value="5025" />
</bean>

下面的示例配置使用自定义的EntityManagerFactory(open-jpa实体管理器)。请注意这段代码只包含了与本例相关的bean,而省略了其他的bean。使用open-jpa实体管理器的完整可用示例,可以在flowable-spring-examples (/flowable-spring/src/test/java/org/flowable/spring/test/jpa/JPASpringTest.java)中找到。

<bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  <property name="persistenceUnitManager" ref="pum"/>
  <property name="jpaVendorAdapter">
  <bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter">
    <property name="databasePlatform" value="org.apache.openjpa.jdbc.sql.H2Dictionary" />
  </bean>
  </property>
</bean>

<bean class="org.flowable.spring.SpringProcessEngineConfiguration">
  <property name="dataSource" ref="dataSource" />
  <property name="transactionManager" ref="transactionManager" />
  <property name="databaseSchemaUpdate" value="true" />
  <property name="jpaEntityManagerFactory" ref="entityManagerFactory" />
  <property name="jpaHandleTransaction" value="true" />
  <property name="jpaCloseEntityManager" value="true" />
  <property name="asyncExecutorActivate" value="false" />
</bean>

也可以使用相同的配置,以编程方式构建引擎。例如:

ProcessEngine processEngine = ProcessEngineConfiguration
  .createProcessEngineConfigurationFromResourceDefault()
  .setJpaPersistenceUnitName("flowable-pu")
  .buildProcessEngine();

配置参数:

  • jpaPersistenceUnitName:要使用的持久化单元的名字。(需要确保该持久化单元在classpath中可用。根据规范,默认位置为/META-INF/persistence.xml)。jpaEntityManagerFactoryjpaPersistenceUnitName二选一。

  • jpaEntityManagerFactory:用于载入实体及刷入更新的,实现javax.persistence.EntityManagerFactory的bean。jpaEntityManagerFactoryjpaPersistenceUnitName二选一。

  • jpaHandleTransaction:标示是否需要由引擎负责开启及提交/回滚EntityManager上的事务。当使用Java Transaction API (JTA)时,需设置为false。

  • jpaCloseEntityManager:标示是否需要由引擎负责关闭从EntityManagerFactory获取的EntityManager实例。当EntityManager由容器管理时(例如,使用扩展持久化上下文 Extended Persistence Context,而不将实体范围限制为单一事务时)需设置为false。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文