|
|
1
3
问题:在这种情况下,DB是否一致?在类似的情况下会(不)一致吗? 始终使用事务。DBs为此进行了优化。如果你有问题,就开始考虑你的设计。比如你每秒要处理成千上万条信息 和 |
|
|
2
2
hibernate事务几乎只是DB事务的包装器。所以它和DB事务一样昂贵。
如果您有一个性能问题,那么测量/计时/分析代码,直到您发现问题为止。通常你可以假设问题在一个地方,而实际上问题在另一个地方。 在你上面的情况下,我会做以下事情
编辑:我将如何做到这一点。。。。
|
|
|
3
1
不管您要做什么,写操作都不能在事务之外完成,如果没有正在进行的事务,Hibernate会抱怨并抛出异常。所以别无选择。
现在,您的用例-a
T1: BEGIN TX;
T2: BEGIN TX;
T1: getEntityByUniqueProperty("foo"); //returns null
T1: getEntityByUniqueProperty("foo"); //returns null
T1: addEntityByUniqueProperty("foo");
T1: COMMIT; //row inserted
T1: addEntityByUniqueProperty("foo");
T2: COMMIT; //constraint violation
所以你要么
就我个人而言,我会选择第三种选择。就性能而言,它是最好的选择,因为它实际上是一种常见的模式,特别是在处理消息传递和高并发性时。 |
|
|
4
1
我想我已经找到了我的用例的具体问题,那就是只在实际需要的时候打开事务,所以我省去了过早的性能难题:
谢谢你的评论。 |
|
Sweepy Dodo · JSON lite的格式化 1 年前 |
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
Zegarek · Postgresql递归查询未提供预期结果 1 年前 |
|
|
Joe · 为什么这两个查询之间的性能存在如此大的差异? 2 年前 |
|
tic-toc-choc · 在`dplyr中高效使用列表进行过滤` 2 年前 |