TransactionDefinition接口中定義了五個表示隔離級別的常量:
- TransactionDefinition.ISOLATION_DEFAULT:使用后端數據庫默認的隔離界別,MySQL默認采用的REPEATABLE_READ隔離級別,Oracle默認采用的READ_COMMITTED隔離級別。
- TransactionDefinition.ISOLATION_READ_UNCOMMITTED:最低的隔離級別,允許讀取,允許讀取尚未提交的的數據變更,可能會導致臟讀、幻讀或不可重復讀。
- TransactionDefinition.ISOLATION_READ_COMMITTED:允許讀取並發事務已經提交的數據,可以阻止臟讀,但是幻讀或不可重復讀仍有可能發生。
- TransactionDefinition.ISOLATION_REPEATABLE_READ:對同一字段的多次讀取結果都是一致的,除非數據是被本身事務自己所修改,可以阻止臟讀和不可重復讀,但幻讀仍有可能發生。
- TransactionDefinition.ISOLATION_SERIALIZABLE:最高的隔離級別,完全服從ACID的隔離級別。所有的事務依次逐個執行,這樣事務之間就完全不可能產生干擾,也就說,該級別可以阻止臟讀、不可重復讀以及幻讀。但是這將嚴重影響程序的性能。通常情況下也不會用到該級別。