小编Wil*_*s C的帖子

Hibernate返回自动生成新插入行的id

我正在使用HibernateTemplate来访问Spring应用程序中的数据库.HibernateTemplate中是否有任何方法/方法返回新插入行的自动生成ID?在我的例子中,自动生成值是我的表的主键,它被定义为数据库内的自动增量.

有关更多信息,我使用saveOrUpdate()方法插入数据.

sql-server spring hibernate

12
推荐指数
1
解决办法
2万
查看次数

优化在大循环中执行"选择"查询的速度

我正在Java循环中执行一个简单的"select"查询,如下所示.列表的大小可以增长到10000+.如何提高查询速度?任何示例或建议表示赞赏.谢谢.

请注意,我需要检索该表的每一列中的所有数据,这就是使用星号(*)的原因.

List<String> valueList = ....
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

try {
    DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
    conn = DriverManager.getConnection(dbURL, dbUsername, dbPassword);
    for (int m = 0; m < valueList.size() ; m++) {    
         String sql = "SELECT * FROM WORKSHEET WHERE " + sheetId + " = '" +    
                      valueList.get(m) + "'";
         ps = conn.prepareStatement(sql);
         rs = ps.executeQuery();
         // retreive data....           
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:最后,有几种方法可以加快此查询速度.我正在使用第二种方式,因为它将来会阻止ORA-04031错误.

  1. 使用参数化的'SELECT'查询和'IN'子句.
  2. 创建一个嵌套表,并将来自JDBC的项目数组/列表转换为创建的嵌套表.
  3. 创建临时表并插入项列表.然后对主表执行JOIN(1个查询)并获得结果.

java oracle jdbc

7
推荐指数
1
解决办法
3409
查看次数

标签 统计

hibernate ×1

java ×1

jdbc ×1

oracle ×1

spring ×1

sql-server ×1