Ручная обработка транзакций с помощью Speedment
Можно ли вручную обрабатывать транзакции с помощью Speedment? Я хотел бы сделать много вставок или обновлений в одной транзакции.
Поведение примера кода по умолчанию:
for (int i = 0; i < 10000; i++) {
Entry e = new EntryImpl()
.setEntrytime(new Timestamp(System.currentTimeMillis()))
.setUserId(janek.getId())
.setDoor(rnd.nextInt(32))
.setUid(UUID.randomUUID().toString());
entries.persist(e);
}
является:
2017-06-01T13:15:11, 24, Query, SET autocommit=0
2017-06-01T13:15:11, 24, Prepare, INSERT INTO `speed`.`entry` (`id`,`entrytime`,`user_id`,`uid`,`door`) VALUES (?,?,?,?,?)
2017-06-01T13:15:11, 24, Execute, INSERT INTO `speed`.`entry` (`id`,`entrytime`,`user_id`,`uid`,`door`) VALUES (0,'2017-06-01 15:15:11',14,'e5cab887-2373-4a19-b8e7-cc914c4d41c4',5)
2017-06-01T13:15:11, 24, Close stmt,
2017-06-01T13:15:11, 24, Query, commit
2017-06-01T13:15:11, 24, Query, SET autocommit=0
2017-06-01T13:15:11, 24, Prepare, INSERT INTO `speed`.`entry` (`id`,`entrytime`,`user_id`,`uid`,`door`) VALUES (?,?,?,?,?)
2017-06-01T13:15:11, 24, Execute, INSERT INTO `speed`.`entry` (`id`,`entrytime`,`user_id`,`uid`,`door`) VALUES (0,'2017-06-01 15:15:11',14,'79d38492-9952-485f-ab03-ff5654d6c78e',9)
2017-06-01T13:15:11, 24, Close stmt,
2017-06-01T13:15:11, 24, Query, commit
2017-06-01T13:15:11, 24, Query, SET autocommit=0
2017-06-01T13:15:11, 24, Prepare, INSERT INTO `speed`.`entry` (`id`,`entrytime`,`user_id`,`uid`,`door`) VALUES (?,?,?,?,?)
2017-06-01T13:15:11, 24, Execute, INSERT INTO `speed`.`entry` (`id`,`entrytime`,`user_id`,`uid`,`door`) VALUES (0,'2017-06-01 15:15:11',14,'ce210b3a-47ac-4c9a-bec9-748a4828843a',13)
2017-06-01T13:15:11, 24, Close stmt,
0 ответов
Действительно, вы можете:
TransactionComponent transactionComponent =app.getOrThrow(TransactionComponent.class);
TransactionHandler txHandler = transactionComponent.createTransactionHandler();
txHandler.createAndAccept(tx -> {
for (int i = 0; i < 10000; i++) {
Entry e = new EntryImpl()
.setEntrytime(new Timestamp(System.currentTimeMillis()))
.setUserId(janek.getId())
.setDoor(rnd.nextInt(32))
.setUid(UUID.randomUUID().toString());
entries.persist(e);
}
}
)
);