假设数据的结构非常简单:有人和狗,人可以有多条狗。在内部,它们之间存在多对多关系。
考虑到这个简单的方法:
@Transactional
public void CreateDog(int personId, string name) {
Person person = GetPerson(personId);
Dog dog = new Dog(name, person);
...
dog.setAdoptedDate(now);
...
}
有可能是多个 CreateDog
同时运行 Person
? 因为每只狗都是独立的,所以狗与狗之间没有限制是有意义的 CreateDog
在同一个所有者中。
我如何确切地知道@transactional应用了哪种类型的锁定?有没有可能它锁定的次数超出了它的需要,这最终会使应用程序运行得比手动处理锁定时更糟糕?这显然是一个非常简单的例子,但我们可以想到更复杂的场景,这将是一个问题。
我的意思是 Dogs
是独立的,但是 Persons
可能不是。尽管它们不是独立的,但是在这个用例中它们不会发生冲突,所以不应该有任何问题。
所以问题是,Spring锁定 Person
在整个过程中?在这种情况下,同一个人没有并发性。有可能避免吗?
暂无答案!
目前还没有任何答案,快来回答吧!