对于JDBC的原生代码,请看我的另一篇文章:JDBC基础篇链接
一、JDBC工具类的封装
1.对于获取连接和关闭连接,就不需要重复编写,可以封装为工具类。
2.步骤如下:
a.新建一个文件名.properties配置文件,properties结尾的文件是以键值对形式存在。
b.创建工具类,通过Class类的getResourceAsStream方法,传入配置文件,返回IO流对象。
c.通过load方法传入键值对集合,通过getProperty方法,参数为键名的字符串,返回值为对应的值的字符串。
public class JdbcUtils{
private static Properties p = new Properties();
static{
// 读入properties文件
InputStream is = JdbcUtils.class.getResourceAsStream("/jdbc.properties");
// 传入properties集合
try {
p.load(is);
} catch (IOException e) {
e.printStackTrace();
}
}
public static Connection getConnection() throws Exception {
//通过getProperty方法,参数为键名的字符串,返回值为对应的值的字符串
Class.forName(p.getProperty("driver"));
Connection connection = DriverManager.getConnection(p.getProperty("url"),p.getProperty("username"),p.getProperty("password"));
return connection;
}
//增删改的关闭方法
public static void close(Connection connection,PreparedStatement preparedStatement){
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (preparedStatement != null) {
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//查询用的关闭方法
public static void close(Connection connection,PreparedStatement preparedStatement,ResultSet resultSet) {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (preparedStatement != null) {
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
二、常见异常
1.驱动名找不到
2.用户名或密码错误
3.SQL语句错误
4.数据绑定使用setXxx()方法出错
5.列名写错了
6.配置文件错误
三、DAO设计模式与ORM编程思想
1.DAO设计模式
介绍:
DAO(Data Access Objects/数据访问层/数据访问对象)设计模式属于JavaEE数据层的操作。使用DAO设计模式可以简化代码量和提高程序的可移植性。
解决问题:
在JDBC操作数据库,都是在JSP页面中写JDBC代码,或者借助于Java Bean实现,这样导致JSP页面中包含大量的HTML代码和Java代码,显示和功能代码混合在一起,难以维护,程序可读性差。使用DAO设计模式可以很好解决上述问题,JSP页面仅用来做表现层。
为了降低耦合性,提出了DAO封装数据库操作的设计模式。它可以实现业务逻辑与数据库访问相分离。相对来说,数据库是比较稳定的,其中DAO组件依赖于数据库系统,提供数据库访问的接口。
一般的DAO的封装有以下两个原则:
a.一个表对应一个类,表中一行数据对应着一个对象。
b.对于DAO接口,必须由具体的类型定义。这样可以避免被错误地调用。
2.ORM编程思想
对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。 —— [ 百度百科 ]
概念:
广义上,ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。 狭义上,ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。
优点:
提高开发效率:ORM框架自动实现Entity实体的属性与关系型数据库字段的映射。CRUD的工作则可以交给ORM来自动生成代码方式实现。隐藏了数据访问细节,“封闭”的通用数据库交互,他使得我们的通用数据库交互变得简单易行,并且完全不用考虑SQL语句。大大提高我们开发效率, 这样一来也减少我们维护一个复杂 缺乏灵活性数据访问层的成本。
成果:
基于这种思想,已经开发出许多优秀的持久型框架,如Hibernate,MyBatis(iBatis),EF等。