首页 文章

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

提问于
浏览
6

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

  • 有没有办法用Spring 3配置JPA 2.0(JPA提供程序是Hibernate)而不将Hibernate实现迁移到JPA(即保留.hbm文件)?

注意:我知道应用程序不符合JPA,并且不能使用其他JPA提供程序 .

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

2 回答

  • 0

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

  • 1

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

    enter image description here

    • 首先启动Hibernate事务并执行所需的任何业务逻辑

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

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

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

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

相关问题