简述Hibernate事务管理器

开发 后端
这里介绍Hibernate事务管理器,由于我们已决定使用Hibernate作为ORM工具,下一步要做的就是配置一个特定于Hibernate事务管理器实现。

Hibernate有很多值得学习的地方,这里我们主要介绍Hibernate事务管理器,包括介绍OrderListManager服务等方面。

Hibernate事务管理器

由于我们已决定使用Hibernate作为ORM工具,下一步要做的就是配置一个特定于Hibernate事务管理器实现。

  1. <beans> 
  2.  
  3. <!-- other code goes here... --> 
  4.  
  5. <bean id="transactionManager1" 
  6. class="org.springframework.orm.hibernate.  
  7. HibernateTransactionManager"> 
  8. <property name="sessionFactory"> 
  9. <ref local="sessionFactory1"/> 
  10. </property> 
  11. </bean> 
  12.  
  13. </beans> 

设计多个组件中的事务的管理

现在,我们来讨论什么是“装配组件事务”。您也许注意到了为域中的服务级组件OrderListManager所指定的各种TX属性。

为了更好的说明,我们来列出我们的域中的一些非功能性需求(Non-Functional Requirement,NFR):
◆业务对象需要保存在一个数据库中(appfuse1)。
◆审计时要登录到另一个数据库中(appfuse2),出于安全的考虑,数据库要有防火墙保护。
◆业务组件应该可以重用。
◆必须尽一切努力审计业务服务层的所有活动。

考虑了以上要求之后,我们决定,OrderListManager服务会将所有的审计日志调用委托给已经可用的AuditManager组件。

这里值得注意的一点是,由于我们的NFR,我们要将与OrderListManager相关的对象映射到appfuse1数据库,而将与审计相关的对象映射到appfuse2。这样,无论要审计什么,OrderListManager组件都会调用AuditManager组件。我们会看到,OrderListManager组件中的所有方法都应该是事务性的,因为我们通过服务来创建订单和线项目(line item)。那么AuditManager组件中的服务呢?因为它做的是审计跟踪,我们关心的是尽可能维持长时间的审计跟踪,并针对系统中所有可能的业务活动。这就产生了如下的需求:“即使主要的业务活动失败了,也要进行审计跟踪记录”。AuditManager组件同样要有自己的事务,因为它也与自己的数据库进行交互。Hibernate事务管理器如下所示:

  1. <beans> 
  2.  
  3. <!-- other code goes here... --> 
  4. <bean id="auditManager"class="org.springframework.transaction.
    interceptor.TransactionProxyFactoryBean"
    > 
  5. <property name="transactionManager"> 
  6. <ref local="transactionManager2"/> 
  7. </property> 
  8. <property name="target"> 
  9. <ref local="auditManagerTarget"/> 
  10. </property> 
  11. <property name="transactionAttributes"> 
  12. <props> 
  13. <prop key="log"> 
  14. PROPAGATION_REQUIRES_NEW  
  15. </prop> 
  16. </props> 
  17. </property> 
  18. </bean> 
  19.  
  20. </beans> 

【编辑推荐】

  1. Hibernate创建和持久化Product
  2. 浅谈Hibernate工作方式
  3. 浅谈Hibernate OrderItem
  4. 简述Hibernate历史背景
  5. Hibernate的Orders OrderItem类
责任编辑:佚名 来源: IT168
相关推荐

2023-03-27 10:40:09

2009-09-23 17:48:00

Hibernate事务

2009-06-03 10:20:11

Hibernate事务管理配置

2009-09-25 12:59:53

Hibernate事务

2009-11-06 11:21:21

WCF事务管理器

2023-04-02 13:57:04

Java自定义事务管理器

2023-10-08 08:28:10

Spring事务管理

2009-06-17 14:57:11

Spring事务管理

2009-06-30 16:57:42

Spring事务管理

2009-06-08 17:56:00

SpringJDBC事务

2014-08-25 09:12:47

Spring事务管理

2010-03-29 13:34:15

ibmdwSpring

2022-08-04 08:46:16

单体架构微服务事务管理

2010-03-23 08:46:40

Spring

2009-07-17 14:03:34

ibatis DAO事务管理

2009-09-29 16:41:58

Hibernate S

2009-02-11 13:08:29

事务提交事务管理Spring

2009-02-11 11:14:31

事务管理事务开始Spring

2009-06-17 14:43:47

Spring框架Spring事务管理

2024-06-05 06:51:11

点赞
收藏

51CTO技术栈公众号