【全栈最全 Java 框架总结】SSH,java 线程池面试问题
(2)hibernate 的核心构成和执行流程图
(3)hibernate 的优点
对 JDBC 访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
Hibernate 是一个优秀的 ORM 实现。他很大程度的简化 DAO 层的编码工作,将软件开发人员从大量相同的数据持久层相关编程工作中解放出来,使开发更对象化了。
透明持久化(persistent)带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。这些对象可能是普通的 javabeans/POJO,(POJO 概念,plain ordinary java object,简单的 java 对象,可以简单理解为简单的实体类 entity。)这个对象没有实现第三方框架或接口,唯一特殊的是他们正与 session 关联。一旦这个 session 被关闭,这些对象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。
事务 transaction 应用程序用来指定原子操作单元范围的对象,它是单线程的,生命周期很短。它通过抽象将应用从底层具体的 JDBC、JTA(java transaction API,JTA 允许应用程序执行分布式事务处理,在两个或多个网络计算机资源访问并且更新数据,JDBC 驱动程序的 JTA 支持极大地增强了数据访问能力)以及 CORBA(公用对象请求代理程序体系结构,common object request broker architecture,简而言之,CORB 允许应用程序和其它的应用程序通讯)事务隔离开。某些情况下,一个 session 之内可能包含多个 transaction 对象,事务边界的开启与关闭时必不可少的。
它没有侵入性,是轻量级框架。
移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变 hibernate 代码。
缓存机制,提供一级缓存和二级缓存。
一级缓存:是 session 级别的缓存,一个 session 做了一个查询操作,它会把这个操作的结果放到一级缓存中,如果短时间内这个 session 又做了同一个操作,那么 hibernate 直接从一级缓存中拿出,而不会去连数据库取数据。
二级缓存:是 sessionFactory 级别的缓存,就是查询的时候会把结果缓存到二级缓存中,如果同一个 sessionFactory 创建的某个 session 执行了相同的操作,hibernate 就会从二级缓存中拿出结果,而不会再去连接数据库。
(4)hibernate 的缺点
持久层封装过于完整,导致开发人员无法对 SQL 进行优化,无法灵活应用原生 SQL。
批量数据处理的时候较为弱势。
框架中使用 ORM 原则,导致配置过于复杂,遇到大项目,维护问题不断。
[Hibernate 实现 CRUD(附项目源码)](
)
[为什么很多人不愿意用 hibernate 了?](
)
[尚硅谷 Java 视频_SSH 整合 &综合案例 视频教程](
)
手动实现教程源码:
链接: https://pan.baidu.com/s/1BK0V1wxA-GQrWco10WEzeg 提取码: 2e3e?
二、SSM
SSM 架构,是三层结合所成的框架,分别是 Spring、SpringMVC、MyBatis 所组成。Spring 依赖注入来管理各层,面向切面编程管理事务,日志和权限。SpringMVC 代表了 model、view、controller 接收外部请求,进行开发和处理。mybatis 是基于 jdbc 的框架,主要用来操作数据库,并且将业务实体和数据表联系起来。
1、spring
详细介绍见 SSH 中 spring。
2、SpringMVC
(1)基本概念
属于 spring 框架的一部分,用来简化 MVC 架构的 web 应用程序开发。
(2)SpringMVC 的优点
拥有强大的灵活性,非侵入性和可配置性
提供了一个前端控制器 dispatcherServlet,开发者无需额外开发控制器对象
分工明确,包括控制器、验证器、命令对象、模型对象、处理程序映射视图解析器,每一个功能实现由一个专门的对象负责完成
可以自动绑定用户输入,并正确的转换数据类型
可重用的业务代码:可以使用现有的业务对象作为命令或表单对象,而不需要去扩展某个特定框架的基类。
(3)SpringMVC 的缺点
servlet API 耦合难以脱离容器独立运行
太过于细分,开发效率低
[SpringMVC 中 put 和 post 如何选择](
)
[GET 和 POST 的区别](
)
[@RequestParam、@ModelAttribute、@RequestBody 的区别](
)
[HttpServletResponse response 实现文件上传、下载](
)
3、mybatis
(1)基本概念
mybatis 是一个简化和实现了 java 数据持久层的开源框架,它抽象了大量的 JDBC 冗余代码,并提供了一个简单易用的 API 和数据库交互。
(2)mybatis 的优点
与 JDBC 相比,减少了 50%以上的代码量。
mybatis 是最简单的持久化框架,小巧并且简单易学。
mybatis 灵活,不会对应用程序或者数据库的限售设计强加任何影响,SQL 写在 XML 里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化,可重用。
提供 XML 标签,支持编写动态 SQL 语句(XML 中使用 if,else)。
提供映射标签,支持对象与数据库的 ORM 字段关系映射(在 XML 中配置映射关系,也可以使用注解)
(3)mybatis 的缺点
SQL 语句的编写工作量较大,对开发人员的 SQL 语句编写有一定的水平要求。
SQL 语句过于依赖数据库,不能随意更换数据库。
拼接复杂 SQL 语句时不灵活。
[【MyBatis 基础知识总结 1】SQL 注入](
)
[【MyBatis 基础知识总结 2】MyBatis-Plus](
)
[MyBatis 常用标签和注解(绝对经典)](
)
[MyBatis 事务管理](
)
[MyBatis 逆向工程(Example + Criteria 简介)](
)
[MyBatis xml 配置文件详解](
)
[Spring JdbcTemplate 简介](
)
[纯干货,Spring-data-jpa 详解,全方位介绍。](
)
[尚硅谷 SSM 整合视频教程雷丰阳雷大神讲解](
)
[SpringMVC 视频教程--颜群](
)
[颜群版 SSM 整合示例](
)
示例源码:
链接:https://pan.baidu.com/s/1NIDjQ5wRBN9hNc_4G1Nhng?
提取码:18vi
三、Springboot
1、springboot 基本概念
springboot 是一个全新的框架,简化 Spring 的初始搭建和开发过程,使用了特定的方式来进行配置,让开发人员不再需要定义样板化的配置。此框架不需要配置 xml,依赖于 maven 这样的构建系统。
2、Springboot 的优点
(1)减少了大量的开发时间并提高了生产力
(2)避免了编写大量的样板代码,注释和 XML 配置
(3)解决了 spring 的弊端
(4)代码少了、配置文件少了、不需要对第三方框架烦恼了、项目精简了,对整个团队的开发和维护来说,更大的节约了成本。
3、springbo
ot 的缺点
(1)修复 bug 较慢,报错时难以定位。
(2)集成度较高,不易于了解底层。
4、springboot 总结
简单、快速、方便的搭建项目;对主流开发框架的无配置集成;极大提高了开发、部署效率。
5、springboot 和 spring 的区别
(1)springboot 可以建立独立的 spring 应用程序。
(2)内嵌了如 tomcat,Jetty 和 Undertow 这样的容器,也就是说可以直接跑起来,用不着再做部署工作。
(3)无需再像 spring 那样写一堆繁琐的 XML 配置文件
(4)可以自动配置 spring
(5)提供的 POM 可以简化 maven 的配置
评论