MyBatis SqlSession autoCommit = false vs ExecutorType.BATCH
MyBatis SqlSession autoCommit = false vs ExecutorType.BATCH
我目前正在使用 MyBatis,我想知道这两个家伙有何不同。
openSession(false);
和
openSession(ExecutorType.BATCH,false);
好像到数据库的结果是一样的,但是性能呢?这2种SqlSession有区别吗?
第一个调用使用您 SqlSessionFactory
中配置的执行器类型。如果配置了 BATCH
执行器,那么这两个调用是完全相同的,您将获得批处理执行器,后续行为是相同的。
在没有明确配置的执行器类型中使用 SIMPLE
执行器。
这两种执行器类型的区别可以在执行多个修改语句的场景中看到。
SIMPLE
执行器在调用相应的映射器方法时立即执行查询。 BATCH
执行者使用 JBDC
批处理 API。 API 不会立即发送查询以供执行,而是收集它们然后对数据库进行一次网络调用。在某些情况下,这可能会提高性能。
我目前正在使用 MyBatis,我想知道这两个家伙有何不同。
openSession(false);
和
openSession(ExecutorType.BATCH,false);
好像到数据库的结果是一样的,但是性能呢?这2种SqlSession有区别吗?
第一个调用使用您 SqlSessionFactory
中配置的执行器类型。如果配置了 BATCH
执行器,那么这两个调用是完全相同的,您将获得批处理执行器,后续行为是相同的。
在没有明确配置的执行器类型中使用 SIMPLE
执行器。
这两种执行器类型的区别可以在执行多个修改语句的场景中看到。
SIMPLE
执行器在调用相应的映射器方法时立即执行查询。 BATCH
执行者使用 JBDC
批处理 API。 API 不会立即发送查询以供执行,而是收集它们然后对数据库进行一次网络调用。在某些情况下,这可能会提高性能。