全国热线

025-86901720

全国监督投诉热线:9:00-23:00

你不得不知道的JDBC的十个实践

JDBC是java为多种关系型数据库提供的统一的访问接口,今天南京学码思java培训学校老师来给大家说说学习java不得不知道的使用JDBC的十个实践,一起来了解一下。

Java一直以来都是十分热门的编程语言,学习的人很多,但作为一门专业技能,学起来并不简单,学习的难点也不少,数据库就是其中之一,JDBC是java为多种关系型数据库提供的统一的访问接口,今天南京学码思java培训学校老师来给大家说说学习java不得不知道的使用JDBC的十个实践,一起来了解一下。

你不得不知道的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是不是有了进一步了解了呢?学好JDBC对于更好的掌握数据库知识是有帮助的。如果你对于java学习还有什么疑问,或者想进一步深入学习java知识的话,可以直接咨询南京学码思java培训学校在线老师,领取免费java教程资料和试听权限,名额有限,先到先得。


上一篇:java有哪些常用的开发工具
下一篇:Java是如何编译的,编译过程是什么样的

相关推荐

免费试听 | 学费咨询 | 在线报名 | 申请补贴 | 软件培训 | 网站地图

2016-2020 南京学码思教育科技有限公司 .All Rights Reserved

苏ICP备16033487号 www.njxms.com.cn

全国热线

400-080-3312

全国监督服务热线:9:00-23:00