Java RETURN_GENERATED_KEYS是否会影响性能?

时间:2018-08-16 10:42:02

标签: java mysql jdbc

我正在使用Statement.RETURN_GENERATED_KEYS来解决以下问题:在数据库中插入一行,然后通过执行新的select检索它的ID后,有时找不到该行-不知何故没有获得该信息到数据库。

我猜想这个标志将确保在执行下一行代码之前将数据提交到数据库。如果是这样:

  1. Statement.RETURN_GENERATED_KEYS是否会影响性能?让执行过程中没有该标志会更快执行吗?
  2. 该标志如何影响SQL语句处理?

[编辑]-我将MySQL Server用作数据库,将c3p0用于连接池实现,将mysql-connector-java用于驱动程序。 浏览一下我所指的上下文,下面是一个代码段:

    StringBuilder insertedId = new StringBuilder("");
    DAOSession session = DAOSession.getInstance();
    Connection conn = session.aquireTransaction();
    Statement stm = null;
    try {
        stm = conn.createStatement();
        stm.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        if (stm != null) {
            // Find and return the generated key
            try (ResultSet generatedKeys = stm.getGeneratedKeys()) {
                if (generatedKeys.next()) {
                    insertedId.setLength(0);
                    insertedId.append(generatedKeys.getString(1));
                } else {
                    // Log this scenario
                }
            }

            stm.close();
        }

        conn.close();
    }

0 个答案:

没有答案