请教关于JFinal 事务、开放锁的问题

1、关于JFinal事务的问题

(1)假如我的业务方法中只调用了JFinal ORM中数据库对象的一个 save() 或者 update()方法,调用的其它操作均不涉及数据库,是否有必要在此方法上加事务?

(2)假如我的业务方法中只调用了JFinal ORM中数据库对象的一个 save() 或者 update()数据库写方法,但还调用了其它数据库查询方法,是否有必要在此方法上加事务?

2、关于JFinal中加开放锁(乐观锁)

    假如我的表中定义了一个整数形的 version 字段,在JFinal ORM 中是否有仅仅通过配置,就能实现开放锁功能?

评论区

JFinal

2018-04-18 11:21

第一个问题中的两个子问题的回答一样:事务只用在需要控制的地方即可

第二个问题,jfinal 并未提供乐观锁的功能,如果确实需要可以通过引入一个中间 BaseModel 辅助实现

rhz-a

2018-04-18 14:09

非常感谢波总及时解答,但第一个问题我还是有些不明白——解答中的“需要控制”具体指什么?假如我在两个子问题中都希望在我的唯一数据库更新方法 update()方法执行期间,其它线程或进程不能读取 update() 所部分更新的同一行脏记录,算不算一种“控制”,是否要加事务?
老实讲,在此前的开发中,为了保险,哪怕我的业务方法只有简单的一行(假设person 是 JFinal 模型的一个实例,只对应表的一行,且没有任何关联):
person.set("age", 76).update();
我也是要加事务的,我现在想问一下是否有此必要?

冰雨

2018-04-22 14:32

假设person 是 JFinal 模型的一个实例,只对应表的一行,且没有任何关联):
person.set("age", 76).update();这个只涉及单个操作,要么成功,要么失败,这个就没必要加事务了,如果需要多个数据库操作,对于这类需要确保整体要么成功要么失败,整体状态保持统一的情况时,需要加事务。

热门反馈

扫码入社