数据库MySQL
后台开发语言是Java/Python
应用场景是提供接口服务基于HTTP RESTful API
1
powergx 2015-08-08 01:33:56 +08:00 via iPhone 1
一组操作就用事务
|
2
incompatible 2015-08-08 01:48:47 +08:00 1
API层的一个post/put/delete操作,涉及到的DML当然要放到同一个事务中
|
3
Lullaby OP |
4
incompatible 2015-08-08 13:13:38 +08:00 via iPhone
@Lullaby API层的操作与数据库层面的操作并不是一对一的关系啊
比如你用微信零钱发了一个红包 这个过程中服务器端除了减少你零钱余额,还要记录一条零钱流水 这样就是两条sql 它们肯定是要放在同一个事务中的 |
5
Lullaby OP @incompatible 这种当然要放在一个事务中啊,但是如果我只有一条插入sql,有必要显示开启、提交事务吗?
|
6
incompatible 2015-08-08 16:32:23 +08:00
@Lullaby 没必要
但是在java里大家通常是这么做的: 有通过sql操作数据库的Dao层 有对外暴露业务行为的Service层 Dao层的sql并不关心自己是否在或不在事务中,事务是在Service层通过AOP来配置的。只要是涉及到insert/delete/update的业务方法,通常都要开启事务。因为我们并不确定这个业务方法是否永远只会调用一个Dao,此时不为其配置事务,今后业务发生改变需要调用更多Dao时,很可能就会忘记加上事务。 |
7
Lullaby OP @incompatible 嗯嗯 说的很好
|