oracle在线中文文档,Oracle TopLink

12.4.4. 事务管理

将事务管理纳入到Service操作的执行中,你可以使用Spring通用的声明式的事务管理功能,参加下面的例子:

xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

注意,TopLink要求你必须在一个活跃的 工作单元(UnitOfWork)

中修改一个持久化对象(你通常不能修改由普通的TopLink的 Session

查询返回的对象,因为这些对象通常是一些从二级缓存中读出的只读对象)。与Hibernate相比,

在TopLink中并没有一种类似脱离事务刷出(non-transactional flush)的概念。基于这

种原因,TopLink需要被建立在特定的环境中,尤其是它需要为JTA同步做明确的创建,由此来

自行检测一个JTA事务以及暴露一个相应的活跃的 Session

和 UnitOfWork。这一点对于本地事务不是必要的,由于它已经被

Spring的 TopLinkTransactionManager 处理,但是对于

需要参与到JTA事务中的情况,是必须的(无论是由Spring的

JtaTransactionManager、EJB CMT或者普通的JTA所驱动的事务)。

在你的基于TopLink的DAO代码中,你可以使用 Session.getActiveUnitOfWork()

方法来访问当前的 UnitOfWork 并通过它来执行写操作。这将只在一个活跃的事务中有效

(在一个收到Spring管理的事务或者JTA事务中)。对于特殊的需求,你同样可以获取单独的

UnitOfWork 实例,它将不参与到当前的事务中去,不过这种情况非常少。

TopLinkTransactionManager 能够将一个TopLink事务暴露给

访问相同的JDBC DataSource 的JDBC访问代码。

前提条件是,TopLink在底层是以JDBC方式工作的并且能够暴露底层的JDBC Connection。

这种情况下,用于暴露事务的 DataSource 必须被明确指定,

它是无法被自动检测到的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值