2019年Java面试题(八) 数据库和dao 2019-04-
一、 数据库
1. 说出数据连接池的工作机制是什么?
J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
二、 DAO
1. dao是什么及其优点
1 dao data access object 数据访问对象 持久化层,主要用来进行数据操作的,经常成为dao模式
2 优点
1 数据访问独立到了一层,分层 ,易于分工,可重用
2 修改具体的dao层实现类,不会影响到其他层,实现松耦合
3 dao的结构 四大组件
1 doa接口
2 dao实现类
3 pojo(plain old java objecct)类
4 dao定位( 如何获取实例 spring)
4 常用的dao技术
jdbc spring的dao 以及orm(ibatis mybatis hibernate)
2. jdbc
1 步骤手写
1 加载驱动 Class.forName("oralce.jdbc.driver.OracleDriver");
2 获取数据库连接 Connection connection=Drivermanager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","aaa","aaa");
3 创建statement Statement statement= connection.createStatement();
4 执行sql statement.executeQuery(sql);
5 处理ResutlSet结果集---手动转成javabean
6 关闭 ResutlSet statement Connection
2 3个statement
1 Statement 一边编译边执行
2 PrepareStatement 预编译,效率高,安全,阻止sql攻击,支持占位符
3 CallableStatement 调用存储过程
PrepareStatement继承Statement,CallableStatement 继承PrepareStatement
3. 说说spring dao
1 对jdbc进行了封装,提供了两大模板技术封装了jdbc步骤,数据源的实现,行映射器进行记录与对象的转换工作,
使用daoSupport方便获取模板
2 给模板类注入数据源,之后使用模板类的api进行数据操作
4. orm框架 什么是orm orm比较 与jdbc比较
1 orm object relaction mapping 对象关系映射,解决面向对象与关系数据库不匹配的技术,对jdbc进行了封装,
使得我们可以使用面向对象的思维操纵数据库。使用缓存与懒加载技术提高效率
2 常见的orm框架有ibatis mybatis hibernate
mybatis与hibernate
1 mybatis 半自动需要手动编写sql, 灵活控制sql,方便sql优化,代码量增加,不易移植, 也叫sql映射、不方便移植
2 hibernate 全自动,自动生成sql, 方便移植,也叫对象映射、方便移植
3 hibernate 与jdbc
1 hibernate封装了jdbc,使得我们可以使用面向对象的思维操纵数据库
2 hibernate 全自动,自动生成sql, 方便移植,也叫对象映射、方便移植
3 jdbc效率最好