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 必須被明確指定,
它是無法被自動檢測到的。
總結
以上是生活随笔為你收集整理的oracle在线中文文档,Oracle TopLink的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据分析】33个热门数据分析软件,你都
- 下一篇: 软件风险基础知识