1. 数据库(JDBC、DBMS)
1. JDBC:JNDI--DataSource---连接池(c3p0\dbcp\Proxool)----DriverManager---connection
oracle的数据库驱动:oracle.jdbc.driver.OracleDrive
mysql 的数据库驱动:com.mysql.jdbc.Driver
驱动的加载方法有:
a、调用方法class.forName
b、通过添加系统的jdbc.drive属性
c、通过registerDriver方法注册
----------------有待整理-----------------
JDBC-ODBC方式实现:
建立JDBC-ODBC桥接器,(使用java.lang中的class类,使用静态方法forName加载驱动)
创建ODBC数据源,
建立与ODBC的连接(可能异常)
----------------有待整理-----------------2. 数据库连接方式有两种:
1.建立JDBC--ODBC桥接器(微软提供)依赖平台,
2.直连纯Java数据库驱动(数据库厂家提供例如 mysql的mysql-connector-java.jar)
3.数据库实现查询功能流程:
1. 加载JDBC驱动
2.建立并获取数据库连接----->通过连接池建立多个连接备用,使用什么连接池用户自定
3. 创建JDBC statements对象--
4.设置SQL语句的传入参数->用if,else判断传入的参数#变量名#占位符 $变量名$非占位符
5.执行SQL语句并获得查询结果
6.对结果进行转换处理并返回
7.释放相关资源
经过优化之后:
(1) 使用数据库连接池对连接进行管理
(2) SQL语句统一存放到配置文件中
(3) SQL语句变量和传入参数的映射以及动态SQL
(4) 动态SQL语句处理
(5) 对数据库操作结果的映射和结果缓存
(6) SQL语句的重复
4. PreparedStatement和Statement的区别:
1.创建时:
1) Statement statement = conn.creatStatement();
2) PrepareStatement preStatement = conn.PrepareStatement(sql);
2.执行时:
1) ResultSet rSet = statement.executeQuery(sql);
2) ResultSet pSet=preStatement.executeQuery();
PreStatement 有预编译过程,已经绑定sql,之后无论执行什么遍,都不会再去编译。
而statement不同,如果执行多遍,就需要编译多遍,所以prestatement效率比较高。
3)安全性:prepareStatement是预编译的,所以可以有效的防止SQL注入等问题。
4)可读和维护:后期维护prepareStatement也比较好读。
5. DBMS:数据库管理系统,事务具有持久性、一致性、原子性、隔离性。
持久性实现恢复管理子系统,一致性实现并发控制子系统,
原子性实现完整子系统,隔离性实现安全控制管理子系统。
一般关系数据模型和对象数据模型之间有以下对应关系:表对应类、记录对应对象、字段对应属性,ORMapping只是规定了结构和集的映射。
6. 数据库的优化:
1.索引: