簡體   English   中英

帶有鎖定表的Spring只讀事務

[英]Spring read-only transaction with locked table

我的彈簧配置:

  <jee:jndi-lookup id="testDataSource" jndi-name="java:testDS" />

  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="testDataSource" />
  </bean>

  <tx:annotation-driven transaction-manager="transactionManager" />

我的Java方法:

@Transactional(readOnly = true)
public List find() {
  jdbcTemplate.query("SELECT * FROM my_table;");
}

如果我直接在數據庫( MySQL )上使用以下腳本:

LOCK TABLES my_table WRITE;

然后嘗試通過只讀事務運行Java代碼,它仍在等待表被解鎖。

由於事務設置為只讀,它不應該返回數據嗎?

謝謝

不可以,因為WRITE鎖定會阻止未持有該鎖定的任何人讀取和寫入表。 如果改用READ,則可以執行查詢。

順便說一句,readOnly直接在數據庫中不執行任何操作,這僅是向ORM層暗示不希望事務執行任何寫操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM