时间:2021-07-01 10:21:17 帮助过:29人阅读
一、JDBC编程 1. 使用JDBC规范 在数据库编程方面,最先使用的数据持久化技术无疑是JDBC 可以说JDBC(Java Data Base Connectivity)是学习其它数据持久化技术的基础 Java中访问数据库使用的就是JDBC,基本操作有CRUD(Create-Read-Update-Delete) JDBC定义
在数据库编程方面,最先使用的数据持久化技术无疑是JDBC
可以说JDBC(Java Data Base Connectivity)是学习其它数据持久化技术的基础
Java中访问数据库使用的就是JDBC,基本操作有CRUD(Create-Read-Update-Delete)
JDBC定义了数据库的连接,SQL语句的执行以及查询结果集的遍历,一般操作步骤如下:
1. 注册驱动:DriverManager.registerDriver(driver);
2. 建立连接:Connection conn = DriverManager.getConnection(url, "username","password");
3. 获取对象:Statement stmt = conn.createStatement();
4. 执行查询:ResultSet rs = stmt.executeQuery(sqlstring);
5. 处理结果:while (rs.next()){doing something about the result}
6. 释放连接:rs.close(); stmt.close();conn.close();
总结:在初学阶段,无疑是必须学会使用原生态的JDBC进行数据库编程
优点:JDBC为数据库编程提供了可能,规范了数据库的连接和操作方式
缺点:JDBC API和SQL语句与Servlet和JSP夹杂在一起
每次进行数据库操作都要进行对象的创建与销毁
大量进行JDBC编程后,就积累了不少经验和发现不少缺点,于是对JDBC进行分层和模块化
而DAO(Data Access Object)和POJO(Plain Old Java Object)则是JDBC下常用的模式
在DAO模式出现之前,操作数据库的代码与业务代码均出现在Servlet或者JSP中
SQL语句、Java语句和Html语句夹杂在一起了,导致开发效率很底下
而使用了DAO模式后,所有的JDBC API和SQL语句均移到了DAO层
实现分层后Servlet、JSP只与Java Bean、DAO层交互,而不会有JDBC API和SQL语句
这无疑增加了程序的清晰性、可读性,而且其可重用性比较好
在JDBC编程中,每一次的数据操作,都要创建并销毁conn对象、stmt对象和rs对象
繁琐的创建和销毁这些对象无疑会消耗一定的时间和IO资源,在并发访问时尤其明显
使用数据源DBCP(DataBase connection pool)技术可以解决这一问题
数据源一般配置在xml文件中,使用数据源会自动进行优化和管理,一般配置如下:
总结:DAO模式解决了JDBC API和SQL语句与JSP的夹杂问题并实现了分层
DBCP则为繁琐的创建和销毁对象提供了解决方法
DAO模式无非就是手动将POJO拆分并拼装成SQL语句和将SQL查询结果拼装回POJO
在使用了JDBC高级技术和DAO模式进行编程后,仍然需要编写大量的SQL语句
而ORM通过xml配置文件或使用Java注解的方式把Java对象映射到数据库上
这样ORM(Object-Relative Database-Mapping)框架就能自动生成SQL语句
Hibernete是ORM框架的一种,同样能够自动生成SQL语句
在DAO模式中,一个简单的Person POJO如下(省略getter和setter方法):
public class Person { private Integer id; private String name; }
对应于数据库的表person
create table if not exists person ( id int primary key auto_increment, name varchar(20) not null, );
使用Java注解后Person POJO实体类能映射到数据库上,并能自动生成SQL语句
代码如下(省略getter和setter方法):
@Entity @Table(name = "person") public class Person{ @Id @GeneratedValue(strategy= IDENTITY) private Integer id; @Column(name = "name") private String name; }
Hibernate使用Session和HQL语句进行数据库的相关操作,如查询数据的操作如下:
Session session =HibernateSessionFactory.getSessionFactory().openSession(); String queryString = "select p.id,p.name from Person p"; //查询并输出所有的记录 List