首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring @Transactional(isolation=Isolation.READ_UNCOMMITTED) vs Spring Data @Lock(LockModeType.None)

Spring @Transactional(isolation=Isolation.READ_UNCOMMITTED) vs Spring Data @Lock(LockModeType.None)
EN

Stack Overflow用户
提问于 2014-11-18 02:06:01
回答 1查看 3.1K关注 0票数 1

一些系统信息,它使用Spring,Spring数据,JPA和Hibernate。

我的问题是,2有什么区别?见下文:

代码语言:javascript
复制
//this uses plain JPA, and uses Spring's Transactional
@Transactional(isolation=Isolation.READ_UNCOMMITTED)
public List getData() {
   //code
}


//this uses Spring Data
@Lock(LockModeType.None)
public List getData() {
   //code
}
EN

回答 1

Stack Overflow用户

发布于 2014-11-18 16:09:27

锁定和交易是两件不同的事情,但无论如何.

此隔离级别允许脏读取。一个事务可能会看到其他事务所做的未提交的更改。

代码语言:javascript
复制
/**
 * A constant indicating that dirty reads, non-repeatable reads and phantom reads
 * can occur. This level allows a row changed by one transaction to be read by
 * another transaction before any changes in that row have been committed
 * (a "dirty read"). If any of the changes are rolled back, the second
 * transaction will have retrieved an invalid row.
 * @see java.sql.Connection#TRANSACTION_READ_UNCOMMITTED
 */
READ_UNCOMMITTED

LockModeType

可以通过将LockModeType参数传递给接受锁(锁、查找或刷新)的EntityManager方法之一或Query.setLockMode()或TypedQuery.setLockMode()方法来指定锁模式。 锁模式可用于指定乐观锁或悲观锁。

因此,正如它所说的,LockModeType.NONE是注释(JPA,注释左和右)的缺省值,我猜当您使用EntityManager.find(类,对象)时,使用的是默认的LockModeType。

我建议此链接看一些悲观和乐观的锁示例,此链接建议查看事务性示例

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26985375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档