JDBC

JDBC

在学习JDBC的过程中又一次体会到了Java作为工业开发语言的严谨。一套统一的接口给所有数据库厂商用于实现,只需要了解接口和方法,再通过将配置文件独立,可以很方便的改用其他数据库。 JDBC的操作主要分为这么几步: 采用反射的方式加载驱动类 通过DriverManager的静态方法getConnec

在学习JDBC的过程中又一次体会到了Java作为工业开发语言的严谨。一套统一的接口给所有数据库厂商用于实现,只需要了解接口和方法,再通过将配置文件独立,可以很方便的改用其他数据库。

JDBC的操作主要分为这么几步:

  1. 采用反射的方式加载驱动类
  2. 通过DriverManager的静态方法getConnection(),传入url,用户名和密码来 获取连接对象
  3. 使用连接对象的createStatement()方法来获取执行语句的对象
  4. 使用执行语句的不同语句分别执行增删改语句和查询语句 ,对于增删改用int接收影响行数,用结果集ResultSet接收结果集。
  5. 结果集的.next()方法用来移动游标,如果.next()为null,就说明移动到了最后一行之后。用get+数据类型的方法,来获取游标的下一行的数据。这样就可以遍历整个结果集。

由于加载驱动的名称,url和用户名及密码都是字符串,所以可以将其抽取到一个配置类中,然后在另外一个工具类中封装好一个静态方法,用于返回指定配置类的数据库连接。这样就非常便于连接不同的数据库。

由于每次连接之后,还是需要做大量的操作,尤其结果集ResultSet对象的操作非常不便,Apache commons 里边提供了DbUtils工具,进一步简化了操作:

  1. QueryRunner类,用于通过连接和ResultHandler对象,一次性完成查询和将结果封装到常用的数据结构中的操作。这里需要注意的是<Class T>的泛型需要传入的是一个 类.class 属性,而不是一个类。
  2. 为一个数据表制作一个用来接受具体数据行的对象,每一个列名设置成对应数据类型的同名变量,然后给一个无参构造器,再设置get和set方法,就可以实现被称作JavaBean的用来保存数据行的对象,这其实已经是ORM思想的体现了。

考虑到每次取得连接也很麻烦,Apache commons里还给了一个连接池对象,一次性可以将所有需要的东西设置完毕,然后调用方法来获得一个连接对象,关闭连接之后也不是真正关闭,而是将连接对象扔回了池子里。这样用起来就非常方便了。通过自己写的配置类+连接池,让连接数据库也变得非常方便。

学过Python再来学Java,真的感觉超级棒,不用去记忆每个数据库的库是什么样子,只需要通过接口对象调用多态方法,再将配置和代码分离,非常简单就可以切换数据库,不愧是工业级开发语言,统一的接口也让大规模协作变得非常容易。

最后还简单了解了一下一个应用程序到数据库的完整业务层面划分:

  1. view 视图层,用于展示用户界面并获取用户输入,然后启动控制层
  2. controller 控制层,用于接收用户的输入,进行处理后,调用业务层
  3. service 业务层,用于处理核心业务逻辑,并调用操作层与数据库交互
  4. Dao 数据库操作层,用于与数据库交互并返回数据给业务层

猛然一想,这不就是MVC么,万事相通啊。

2月20日更新,JDBC更新一张脑图:

LICENSED UNDER CC BY-NC-SA 4.0
Comment