.hbm文件可以在JPA应用程序中使用Hibernate作为JPA提供程序吗?

时间:2011-02-10 17:16:59

标签: hibernate spring transactions jpa-2.0 jbpm

我想在一个产品中用Activiti或jBPM-5替换自定义BPM实现,该产品使用Hibernate(No JPA)和Spring进行持久层实现。不幸的是,Activiti和jBPM5都需要JPA(根据他们的文档),并且不可能将所有现有的Hibernate实现迁移到产品中的JPA。

  1. 有没有办法用Spring 3配置JPA 2.0(JPA提供程序是Hibernate)而不将Hibernate实现迁移到JPA(即保留.hbm文件)?
  2. 注意:我知道应用程序不符合JPA,并且不能使用其他JPA提供程序。

    1. 如果有方法,假设Spring JTA事务管理器配置了适当的设置。 可以在单个Spring事务中执行应用程序逻辑和BPM工作流逻辑吗?

2 个答案:

答案 0 :(得分:1)

关于交易,请参阅Activiti Spring Transaction文档。如果您无法移植应用程序以使用JPA,则另一个选项是在Hibernate域上层叠外观。 Activiti允许您在spring托管bean上调用方法,因此您可以创建外观或使用现有服务层。查看Activity附带的示例应用程序,了解spring集成的工作原理。

答案 1 :(得分:0)

JPA的jBPM可以使用Spring与旧的非JPA应用程序集成。与jBPM的交互使用JPA,但您的应用程序将使用hibernate。唯一的缺点是你必须处理2个不同的交易,但任何问题都可以减轻。

enter image description here

  1. 首先启动Hibernate事务并执行您想要的任何业务逻辑

  2. 通过调用JBPM API启动进程或发送事件等来启动JBPM事务。

  3. 任何WorkItemHandler实现都需要使用会话工厂API加入外部事务

  4. 需要在每次WorkItemHandler执行结束时调用Hibernate flush(),以触发业务代码生成的大多数异常

  5. WorkItemHandler应该捕获业务代码生成的任何异常并重新抛出它,以便JBPM事务也失败