小编Rah*_*hul的帖子

Spring @Transactional 超时未按预期工作

我有一个 JDBC 批量更新操作可能需要很长时间,因此我使用事务超时来处理这个。

@Override
@Transactional(propagation=Propagation.REQUIRES_NEW,timeout=10)
public void saveAllUsingBatch(List<KillPrintModel> list){
    PreparedStatmentMapper ps=  new HibernateDao.PreparedStatmentMapper<KillPrintModel>() {

        @Override
        public void prepareStatement(PreparedStatement ps, KillPrintModel t)
                throws SQLException {
            ps.setString(1, t.getOffice());
            ps.setString(2, t.getAccount());
            ps.setDate(3, new java.sql.Date(t.getUpdatedOn().getTime()));
        }
    };
    String sql = String.format("INSERT INTO dbo.%s (%s,%s,%s) VALUES (?,?,?)",KillPrintModel.TABLE_NAME,KillPrintModel.FIELD_Office,KillPrintModel.FIELD_Account,KillPrintModel.FIELD_UpdatedOn);
    this.jdbcBatchOperation(list, sql, ps);
}
Run Code Online (Sandbox Code Playgroud)

即使我的事务时间超过 10 秒,此方法也会持续一分钟以上(并成功返回)。当超时为 0 时它工作正常。


是不是因为我的线程一旦开始执行就一直处于运行状态?

java spring-transactions

6
推荐指数
1
解决办法
4019
查看次数

内存和嵌入数据库之间的区别

我想知道我的理解是否正确:

embedded:数据库,如果我的应用程序启动,则会启动;如果应用程序关闭,则会关闭. 我不是指嵌入式空间中使用的数据库.

内存:数据库可以在任何服务器上; 无论我的应用程序在哪里运行.就是这样,这些使用主存.

database embedded-database in-memory-database

3
推荐指数
1
解决办法
1398
查看次数