我正在使用Spring,Hibernate / JPA和MySQL5.1 innodb。我有以下代码:
@Transactional
public List findUsers(){
return entityManager.createNamedQuery("findUsers").getResultList();
}
@Transactional
public void findUserAndUpdate(Long userId){
User user = entityManager.createNamedQuery("findUserById").setParameter(1, userId).getSingleResult();
user.setName("newName");
entityManager.persist(user);
}
据我所知,@ Transaction的默认设置是Propagation.Required,隔离级别是ReadCommited。
我的问题是:
此查询使用哪种锁?或者根本没有锁?
两种方法中的读取查询有什么区别吗?因为一方有另一方没有保存点。
如果您能解释交易的整个过程,我感激不尽。我的意思是Spring,Hibernate,JDBC和DBMS都在此过程中存在事务管理问题。他们都参与了吗?或者只有Spring负责交易管理?谁添加了对数据的锁定?
提前致谢!