java每日5问(第38天)

hibernate 和 mybatis 的区别?

相同点:
1)都属于 ORM 框架2)都是对 jdbc 的包装3)都属于持久层的框架不同点:
1) hibernate 是面向对象的,mybatis 是面向 sql 的;
2) hibernate 全自动的 orm,mybatis 是半自动的 orm;
3) hibernate 查询映射实体对象必须全字段查询,mybatis 可以不用;
4) hibernate 级联操作,mybatis 则没有;
5) hibernate 编写 hql 查询数据库大大降低了对象和数据库的耦合性,mybatis 提供动态 sql, 需要手写 sql,与数据库之间的耦合度取决于程序员所写的 sql 的方法,所以 hibernate 的移植性要远大于 mybatis。
6) hibernate 有方言夸数据库,mybatis 依赖于具体的数据库。
7) hibernate 拥有完整的日志系统,mybatis 则相对比较欠缺。

MyBatis 的优点?

1、基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响, SQL 写在 XML 里,解除 sql 与程序代码的耦合,便于统一管理;提供 XML 标签,支持编写动态 SQL 语句,并可重用。
2、与 JDBC 相比,减少了 50%以上的代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接;
3、很好的与各种数据库兼容(因为 MyBatis 使用 JDBC 来连接数据库,所以只要 JDBC 支持的数据库 MyBatis 都支持)。
4、能够与 Spring 很好的集成;
5、提供映射标签,支持对象与数据库的 ORM 字段关系映射;提供对象关系映射标签,支持对象关系组件维护。

MyBatis 框架的缺点?

(1) SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 SQL 语句的功底有一定要求。
(2) SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

SpringMVC 工作流程?

1、用户发送请求至前端控制器 DispatcherServlet
2、DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。
3、处理器映射器根据请求 url 找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。
4、DispatcherServlet 通过 HandlerAdapter 处理器适配器调用处理器
5、执行处理器(Controller,也叫后端控制器)。 6、Controller 执行完成返回 ModelAndView
7、HandlerAdapter 将 controller 执行结果 ModelAndView 返回给 DispatcherServlet 8、DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器
9、ViewReslover 解析后返回具体 View
10、DispatcherServlet 对 View 进行渲染视图(即将模型数据填充至视图中)。
11、DispatcherServlet 响应用户

MyBatis 框架使用的场合?

(1) MyBatis 专注于 SQL 本身,是一个足够灵活的 DAO 层解决方案。

(2) 对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis 将是不错的选择。

猜你喜欢

转载自blog.csdn.net/qq_39899164/article/details/107525913
今日推荐