Spring Cloud Datastore 交易

2024-01-12 09:34 更新

DatastoreOperations通過(guò)performTransaction方法提供讀寫事務(wù):

@Autowired
DatastoreOperations myDatastoreOperations;

public String doWorkInsideTransaction() {
  return myDatastoreOperations.performTransaction(
    transactionDatastoreOperations -> {
      // Work with transactionDatastoreOperations here.
      // It is also a DatastoreOperations object.

      return "transaction completed";
    }
  );
}

performTransaction方法接受Function,該FunctionDatastoreOperations對(duì)象的實(shí)例。函數(shù)的最終返回值和類型由用戶確定。 您可以像常規(guī)DatastoreOperations一樣使用此對(duì)象,但有一個(gè)例外:

  • 它無(wú)法執(zhí)行子交易。

由于Cloud Datastore的一致性保證,因此在事務(wù)內(nèi)部使用的實(shí)體之間的操作和關(guān)系存在 限制 。

帶有@Transactional批注的聲明式事務(wù)

此功能要求使用spring-cloud-gcp-starter-data-datastore時(shí)提供的bean為DatastoreTransactionManager。

DatastoreTemplateDatastoreRepository支持將@Transactional 注釋作為事務(wù)運(yùn)行的方法。如果用@Transactional注釋的方法調(diào)用了另一個(gè)也注釋的方法,則這兩種方法將在同一事務(wù)中工作。performTransaction無(wú)法在帶有注釋的@Transactional方法中使用,因?yàn)镃loud Datastore不支持事務(wù)內(nèi)的事務(wù)。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)