欢迎来到双子树教育网!
机构档案

在线交谈:点击这里给我发消息

咨询热线:159-0741-2407

快速报名,会有咨询师与您联系

学校评价(我要提问/点评)

  • 学校被点评:1
  • 好评(100%)
  • 中评(0%)
  • 差评(0%)

资料认证

    已通过身份证认证 已通过身份证认证

    已通过办学许可认证 已通过办学许可认证

  • 学校浏览人次:
  • 加盟时间:2019年11月15日
动态

JDBC总结的十个实践

发布者:长沙达内教育 发布时间:2021-01-17 来源:长沙达内教育

JDBC 是 Java 为多种关系型数据库提供的统一的访问接口,以下是使用 JDBC 总结的十个实践。

1. 使用 PrearedStatement

任何一个使用过 JDBC 的Java程序员几乎都知道这个,PreparedStatment 可以通过预编译的方式避免我们在拼接 SQL 时造成 SQL 注入。

达内教育

2. 使用 ConnectionPool (连接池)

使用连接池作为实践几乎都成了公认的标准。一些框架已经提供了内建的连接池支持.

例如 Spring 中的 Database Connection Pool,如果你的应用部署在 JavaEE 的应用服务器中, 例如 JBoss,WAS,这些服务器也会有内建的连接池支持,例如 DBCP。

使用连接的原因简单的说就是因为创建 JDBC 连接耗时比较长,如果每次查询都重新打开一个连接, 然后关闭,性能将会非常低,而如果事先创建好一批连接缓存起来,使用的时候取出, 不使用的时候仍不关闭,将会节省大量的创建关闭连接的时间。

3. 禁用自动提交

这个实践在我们使用 JDBC 的批量提交的时候显得非常有用,将自动提交禁用后, 你可以将一组数据库操作放在一个事务中,而自动提交模式每次执行 SQL 语句都将执行自己的事务, 并且在执行结束提交。

4. 使用 Batch Update

JDBC 的 API 提供了通过 addBatch() 方法向 batch 中添加 SQL 查询,然后通过 executeBatch() 执行批量的查询。

JDBC batch update 可以减少数据库数据传输的往返次数,从而提高性能。

5. 使用列名获取 ResultSet 中的数据,从而避免 invalidColumIndexError

JDBC 中的查询结果封装在 ResultSet 中,我们可以通过列名和列序号两种方 式获取查询的数据, 当我们传入的列序号不正确的时候,就会抛出 invalidColumIndexException。

例如你传入了0,就会出错,因为 ResultSet 中的列序号是从1开始的。

另外,如果你更改了数据表中列的顺序,你也不必更改 JDBC 代码,保持了程序的健壮性。

有一些 Java 程序员 可能会说通过序号访问列要比列名访问快一些,确实是这样,但是为了程序的健壮性、可读性,我还是更推荐你使用列名来访问。

6. 使用变量绑定而不是字符串拼接

在第一条实践中,我们已经说过要使用 PreparedStatment 可以防止注入,而使用?

或者其他占位符也会提升性能,因为这样数据库就可以使用不同的参数执行相同的查询, 这个实践带来更高的性能的同时也防止了 SQL 注入。

7. 要记住关闭 Statement、PreparedStatement 和 Connection

通常的做法是在 finally 块中关闭它们,这样做的好处是不论语句执行正确与否, 不管是否有异常抛出,都能保证长沙被释放。

在 Java7 中,可以通过 Automatic Resource Management Block 来自动的关闭长沙。

8. 选择合适的 JDBC 驱动

有四种 JDBC 驱动,分别是

1). JDBC-ODBC Bridge driver (bridge driver)

2). Native-API/partly Java driver (native driver)

3). AllJava/Net-protocol driver (middleware driver)

4). All Java/Native-protocol driver (Pure java driver)

9. 尽量使用标准的 SQL 语句,从而在某种程度上避免数据库对 SQL 支持的差异

不同的数据库厂商的数据库产品支持的 SQL 的语法会有一定的出入,为了方便移植,我推荐使用标准的 ANSI SQL 标准写 SQL 语句。

10. 使用正确的 getXXX() 方法

当从 ResultSet 中读取数据的时候,虽然 JDBC 允许你使用 getString() 和 getObject() 方法获取任何数据类型, 推荐使用正确的 getXXX 方法,这样可以避免数据类型转换。

以上就是 长沙达内教育 小编为您整理 JDBC总结的十个实践 的全部内容,更多学习资讯,课程费用,培训时间可咨询在线老师!
校区地址
  • 乘车路线:电话预约
  • 授课地址:

地理位置 Location