【问题标题】:manually handling of transactions with Speedment使用 Speedment 手动处理交易
【发布时间】:2017-11-02 16:48:58
【问题描述】:

是否可以使用 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, 

【问题讨论】:

    标签: java speedment


    【解决方案1】:

    确实可以:

    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);
        }
    
                }
            )
        );
    
    

    【讨论】:

      猜你喜欢
      • 2018-04-11
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 2012-05-26
      • 2016-03-24
      • 2020-07-23
      • 1970-01-01
      相关资源
      最近更新 更多