MyBatis SqlSession autoCommit = false против ExecutorType.BATCH

В настоящее время я работаю с MyBatis, и мне интересно, чем эти два парня отличаются.

openSession(false);

а также

openSession(ExecutorType.BATCH,false);

Кажется, что результаты для базы данных такие же, но как насчет производительности? Эти 2 типа SqlSession разные?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
1 599
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Первый вызов использует тип исполнителя, который настроен в вашем SqlSessionFactory. Если настроен исполнитель BATCH, то эти два вызова абсолютно идентичны, и вы получите пакетный исполнитель, а последующее поведение будет идентичным.

Ни в одном из исполнителей не используется явно сконфигурированный исполнитель SIMPLE.

Разницу между этими двумя типами исполнителей можно увидеть в сценариях, когда выполняется несколько операторов модификации.

Исполнитель SIMPLE выполняет запрос сразу после вызова соответствующего метода сопоставления. Исполнитель BATCH использует пакетный API JBDC. Этот API не отправляет запросы на выполнение немедленно, а вместо этого собирает их, а затем выполняет один сетевой вызов к базе данных. В некоторых сценариях это может дать прирост производительности.

Другие вопросы по теме