JDBC总结
JDBC(java database connectivity,java 数据库连接),从结构上分为两个部分:客户API和SPI(服务提供商API),二者均是接口,客户API是给应用程序开发人员用的,SPI是给mysql\oracle等数据库厂商的开发人员用的,从本质上来说就是调用者(程序员)和实现者(数据库厂商)之间的协议。JDBC编程的步骤
JDBC编程用的是客户API,主要分为三个部分,先建立DB连接,后利用此连接进行DB交互,最后是资源释放。
DB连接阶段
DB连接就是通过数据库厂商提供的驱动类与数据库进行连接的过程,此过程有两种实现方式: JNDI方式和非JNDI方式。JNDI方式:在XML文件中定义一个JNDI项,子项配置数据库驱动类,数据库URL,用户名,密码等信息,然后通过initialcontext.lookup()得到一个DataSource对象,调用 DataSource.getConnection()方法得到与数据库的连接,之后就可以利用此连接与数据库进行交互。
非JNDI方式:此方式首先要注册驱动类,然后得到连接。
注册驱动类有四种方式(假设驱动类完全限定名是org.postgresql.Driver):
1 Class.forName("org.postgresql.Driver");// 此方法会自动注册驱动类
2 System.setProperty("jdbc.drivers", "org.postgresql.Driver")
3 Driver driver = new com.mysql.jdbc.Driver();DriverManager.registerDriver(driver)
4 java -Djdbc.drivers="org.postgresql.Driver" MyProg
驱动类注册之后,可以通过DriverManager.getConnection(url,username,password)得到与数据库的连接。
DB交互阶段
与数据库建立连接(connection)后,通过connection对象提供的方法与数据库交互。主要的交互包括:通过connection.createStatement(sql)或connection.preparedStatement(sql)建立statement\preparedstatement,从statement\preparedstatement得到resultset,调用resultSet的相应方法操作数据库数据。
资源释放阶段
当使用完ResultSet、Statement、preparedStatement、Connection对象时,应立即调用close方法, 此方法会立即释放此statement对象的数据库和JDBC资源,而不是等待该对象自动关闭时发生此操作,这里的对象自动关闭发生于GC时。这些对象都使用了规模较大的数据结构,对于数据库和JDBC占用大, 所以我们不应该等待GC来处理它们。如果Statement对象上有一个打开的结果集,那么调用close方法将自动关闭该结果集,同样地,调用Connection的close方法将关闭该连接上的所有statement。