1.持久层解决方案:
1.1.面试1:请说一说持久层解决方案有哪些???
- 1.jdbc
- JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。
- 2.DBUtils:
- DBUtils是一个小型的类库, 是一个jdbc的工具,主要是为了简化jdbc的代码使JDBC编程更加方便,简单。
- 在JDBC编程中,资源的关闭是显式的,极易导致编程出现错误,DBUtils把这些工作抽象出来,使得程序员编程时仅需要关心正真的问题,即对数据库的增删改查
- 3.JdbcTemplate
- JdbcTemplate是Spring提供的一个JDBC模板类,是对JDBC的封装,简化JDBC代码
- 4.MyBatis
- 5.Hibernate(实现了JPA规范)
- 8.
Spring Data
(实现了JPA规范)
1.2.面试2:持久层各解决方案的对比:
a.Jdbc方案介绍:
1.jdbc学习:
- 1.JDBC学习大纲
2.操作流程
- 加载数据库驱动
- 通过驱动管理,获取数据库的连接
- 编写sql语句,使用?表示占位符
- 获取预处理statemennt,执行查询
- 设计传参
- 结果集处理
- 释放资源,关闭数据库连接
3.使用JDBC的缺陷
- 代码比较多,开发效率低
- 需要
关注 Connection ,Statement, ResultSet 对象创建和销毁
- 对 ResultSet 查询的结果,需要自己封装为 List
- 重复的代码比较多些
- 业务代码和数据库的操作混在一起,
SQL语句写死在Java程序中,不灵活。改SQL的话就要改Java代码。违背开闭原则OCP
b.Appache的DBUtils与Spring中的JdbcTemplate
- 1.DBUtils它和Spring中的JdbcTemplate很像,是对Jdbc的简单封装
- JdbcTemplate是对Jdbc的简单封装的
- [说明]
以上这些都不是框架
,是一种JDBC是规范
;Spring中的JdbcTemplate
和Appache的DBUtils
都只是工具类
- 2.
JDBC -> Dbutils ->jdbcTemplate
;使用这些工具类,功能简单,sql语句是编写在了java代码里面,耦合度较高,而框架是一个整体的解决方案
,所以就诞生了很多框架
c.Hibernate特点:
- 1.长难复杂SQL,对于Hibernate而言处理也不容易
- 2.内部自动生产的SQL,不容易做特殊优化。
- 3.基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难。 导致数据库性能下降
- 4.
Hibernate框架就是一个全自动化的ORM。使用Hibernate框架的时候,不需要程序员手动编写SQL语句,SQL语句可以自动生成。所以Hibernate是一个完全的全自动化的ORM框架。半自动步枪和全自动突击步枪,一个精度准火力不足,一个火力猛精度不够。