【全栈最全 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 的配置











 
    
评论