目录
一、JDBC
1. 数据库连接简述
使用java作为客户端连接数据库服务器的通道,操作数据库并获取结果
2. 数据库连接步骤
- 加载驱动
- 创建连接
- 获取sql执行对象
- 执行sql
- 获取结果
- 关闭连接并释放资源
3. 常用的JDBC是什么
JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API。JDBC API提供了一个标准接口,用于与任何关系数据库管理系统(RDBMS)进行交互。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
简单来说,jdbc就是java封装的类库,java提供了一些接口用于连接数据库,由不同的数据库厂商对它实现。这些接口在jdk中的rt.jar包下,主要有Driver、Connection、Statement、PreparedStatement等。
4. JDBC的结构
JDBC Driver Interface(驱动程序管理器接口)是面向底层的,JDBC API则是面向开发人员的。
(1)JDBC Driver(JDBC驱动程序)
驱动程序实现JDBC接口与数据库进行交互,数据库供应商提供JDBC驱动程序。
分类:
- JDBC-ODBC桥的方式。但这种方式不适合程序的重用与维护,不推荐使用。需要数据库的ODBC驱动。
- JDBC+厂商API的形式。厂商API一般使用C编写,所以,这种方式也不长使用。
- JDBC+厂商Database Connection Server+DataBase的形式。
这种方法就是在JAVA 与 DATABASE之间价起了一台专门用与数据库连接的服务器(一般由数据库厂商提供)。他的好处在于能优化连接。 - 纯JDBC+DATABASE的连接方式。也是推荐的连接方式。这使得APPLICATION与数据库分开,开发者只需关心内部逻辑的实现而不需注重数据库连接的具体实现。在这其中有两种连接的方式:
硬编码方式,就是在程序中硬性编入数据库连接的所须参数。
JNDI DataSource方式。就是在程序运行的外布环境中又称(Context)设置一个datasource数据源,有一个jndi 名称,程序只须查找此名称就可得到一个数据库连接的对象。
(2)Connection(连接)
通过Connection对象,与数据库进行交互,例如,创建一个Statement来对表执行SQL查询,可以一次打开多个数据库连接。
(3)Statement(声明)
要执行SQL查询,例如SELECT,INSERT,UPDATE,DELETE等,可以使用Statement对象。通过Connection对象创建Statement 对象。JDBC提供了几种类型的不同用途,如语句PreparedStatement,CallableStatement 。
(4)ResultSet(结果集)
从数据库查询数据后,将获得一个ResultSet对象。该ResultSet对象提供了一组API,允许遍历查询结果。
二、数据库连接池
1. 什么是数据库连接池
数据库连接池(Database Connection Pooling)在程序初始化时在内存中创建多个数据库连接对象,当需要操作数据库时从池中取出,用完放回,和线程池一样。
2. 优点
1.节省资源,避免每次操作数据库都创建新连接导致浪费系统资源
2.响应性更好,省去了创建的时间
3.统一管理数据库连接,避免因为业务的膨胀导致数据库连接的无限增多
4.便于监控
3. 详解
感兴趣可以看看http://www.360doc.com/content/20/0117/15/13328254_886693035.shtml
三、ORM数据库框架
ORM(Object Relational Mapping对象关系映射)框架是为了解决面向对象与关系型数据类型不匹配的问题,通过描述java对象与数据库表之间的映射关系,自动将java应用程序中的对象持久化到关系型数据库的表中。
常见的框架Hibernate和MyBatis
1. Hibernate
全表映射的框架,只需要定义好持久化对象到数据库表的映射,因为Hibernate会自动生成对应的SQL,并调用JDBC执行
优点:
1)、hibernate是全自动,可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。
2)、功能强大,数据库无关性好,O/R映射能力强,需要写的代码很少,开发速度很快。
3)、有更好的二级缓存机制,可以使用第三方缓存。
4)、数据库移植性良好。
5)、hibernate拥有完整的日志系统,hibernate日志系统非常健全,涉及广泛,包括sql记录、关系异常、优化警告、缓存提示、脏数据警告等
缺点:
1、学习门槛高,精通门槛更高,程序员如何设计O/R映射,在性能和对象模型之间如何取得平衡,以及怎样用好Hibernate方面需要的经验和能力都很强才行
2、hibernate的sql很多都是自动生成的,无法直接维护sql;虽然有hql查询,但功能还是不及sql强大,见到报表等变态需求时,hql查询要虚,也就是说hql查询是有局限的;hibernate虽然也支持原生sql查询,但开发模式上却与orm不同,需要转换思维,因此使用上有些不方便。总之写sql的灵活度上hibernate不及mybatis。
2. MyBatis
MyBatis 框架是一个半自动映射的框架,不完全的ORM,因为MyBatis 框架需要手动匹配提供 POJO、SQL 和映射关系,而 Hibernate 框架只需提供 POJO 和映射关系即可。
与 Hibernate 框架相比,虽然使用 MyBatis 框架手动编写 SQL 要比使用 Hibernate 框架的工作量大,但 MyBatis 框架可以配置动态 SQL 并优化 SQL、通过配置决定 SQL 的映射规则,以及支持存储过程等。对于一些复杂的和需要优化性能的项目来说,显然使用 MyBatis 框架更加合适。