JDBC简称Java数据库连接,通过ORM对象关系映射将程序中的对象自动持久化到关系数据库中。
JAVA JDBC相关的API包括:DriverManager,Connection,Statement,ResultSet。其中前三个是接口,最后一个是类。JAVA的JDBC是模板代码大概分为以下几个步骤。
1、首先就是导入驱动包jar,加载驱动。
2、准备连接字符串(数据库产口名称、要连接的数据库的电脑、数据库名称、登录的用户名、密码),我们可以将这里连接字符串保存到xml文件中,在通过dom4j组件读取。这样做的好处就是一旦修改连接字符串无需重新编译文件。
3、创建(获取)数据库操作对象,通过Connection对象来创建命令语句对象Statement,并准备要操作SQL命令。为了防止SQL攻击,以及更好的绑定参数,我们可以使用statement的子接口PreparedStatement。在sql语句中用?占位符去对应一个动态的Object数组。
4、执行SQL,并返回结果集,如果我们的sql语句是查询多条记录的话。可以使用反射和泛型将ResultSet结果集封装到javaBean对象,再把全部的javaBean对象保存在一个集合中,返回给我们的业务层。
5、最后关闭连接释放资源,释放资源时必须要分别进行异常处理,最晚打开的,最先关闭。我们可以使用连接池来管理连接对象。避免频繁创建和关闭连接。
在实际项目中,对应一个业务方法中同时执行多条sql语句,则需要使用到事务处理,一旦某条sql语句出现异常,就立即进行rollback事务回滚。例如对于银行转账事务,不管事务成功还是失败,应该保证事务结束后两个转账账户的存款总额是与转账前一致的。
JDBC接口提供了一个setAutoCommit(boolean flag)方法,我们可以用它来关闭连接自动提交的特性。
我们应该在需要手动提交时才关闭这个特性,不然的话事务不会自动提交,每次都得手动提交。数据库通过表锁来管理事务,这个操作非常消耗资源。因此我们应当完成操作后尽快的提交事务。
我们在进行JDBC操作时,如果未导入jar包,就会ClassNotFoundException,
更多异常可看这链接地址
JDBC与mybatis的区别
1、我们使用JDBC对数据库进行操作时,SQL查询语句分布在各个Java类中,这样可读性差,不利于维护,当我们修改Java类中的SQL语句时要重新进行编译,Mybatis可以把SQL语句放在配置文件中统一进行管理,以后修改配置文件,也不需要重新就行编译部署。
2、JDBC的resultSet需要用户自己去读取并生成对应的POJO,MyBatis的mapper会自动将执行后的结果映射到对应的Java对象中。
3、Mybatis可以通过标签生成动态SQL语句。