В чем разница в поведении в случаях если я устанавливаю hibernate.connection.autocommit
true
или false
?
И почему включать эту функцию не рекомендуется?
hibernate.connection.autocommit=true
идентично JDBC команде: Connection.setAutoCommit(true);
Означает, что каждое SQL выражение рассматривается как отдельная транзакция и после выполнения выражения автоматически закрывается транзакция вызовом commit()
- то есть подтверждением, что транзакция завершилась.
Это удобно и применяется только для простых операций. Для более сложных операций автокоммит может приводить к катастрофе.
Простой пример: допустим вы делаете перевод денег с одного счета на другой - это 2 операции - списание денег с одного счета и зачисление денег на другой счет. В ситуации с автокоммитом - вы списываете деньги с одного счета и подтверждаете транзакцию, далее зачисляете деньги на второй счет и опять подтверждаете транзакцию - вроде все отлично. Однако, если в момент между снятием денег с одного счета и зачислением денег на второй счет допустим падает коннекшн или рушится сервер, то после восстановления - вы получите что денежки пропали - со счета списались, но никуда не зачислились, а деньги эт всегда серьезно.
В правильной системе вы должны делать так:
commit()
)В таком случае, ни падение коннекта, ни обрушение сервера, ни что-то еще другое не сможет привести к фатальным последствиям.
Более подробно, например здесь
Виртуальный выделенный сервер (VDS) становится отличным выбором
Например: в первом списке мы выбираем страну, появляется новый (ниже первого), там выбираем город, появляется новый и тд пока не дойдем до конечного...
Суть: нужна кнопка которая появляется при определённом событии в 2D игре(не меню)Не всплывающее окно и не JButton
Есть такой вопросУ меня в базе есть пакет с функцией, который возвращает CLOB