Hibernate 框架
1、 Hibernate 的执行流程
通过 Configuration.configure()读取并解析 hibernate.cfg.xml 配置文件;
由 hibernate.cfg.xml 中的<mapping resource=” com/xx/User.hbm.xml” />读取并解析映
射信息;
通过 config.buildSerssionFactory()创建 SessionFactory;
sessionFactory.openSession()打开 session;
session.beginTransaction()创建事务 transation;
persistent operate(持久化操作);
session.getTransaction().commit()提交事务;
关闭 session;
关闭 SessionFactory。
2、 Hibernate 缓存&延迟加载
Hibernate 一级缓存又称为“Session 的缓存”。 Session 内置不能被卸载, Session 的缓存
是事务范围的缓存(Session 对象的生命周期通常对应一个数据库事务或者一个应用事务)。
一级缓存中, 持久化类的每个实例都具有唯一的 OID;
Hibernate 二级缓存又称为“SessionFactory 的缓存”。 由于 SessionFactory 对象的生命周
期和应用程序的整个过程对应, 因此 Hibernate 二级缓存是进程范围或者集群范围的缓存,
有可能出现并发问题, 因此需要采用适当的并发访问策略, 该策略为被缓存的数据提供了事
务隔离级别。 第二级缓存是可选的, 是一个可配置的插件, 默认下 SessionFactory 不会启
用这个插件。
Session 的延迟加载实现要解决两个问题: 正常关闭连接、 确保请求中访问的是同一个
session。 Hibernate session 就是 java.sql.Connection 的一层高级封装, 一个 session
对应了一个 Connection。 http 请求结束后正确的关闭 session(过滤器实现了 session 的
正常关闭), 延迟加载必须保证是同一个 session(session 绑定在 ThreadLocal)。
3、 Hibernate 与 Mybatis 的区别
1.Mybatis 是把 sql 语句与 java 代码分离了, sql 语句在 xml 文件配置;
2.Hibernate 是 ORM 框架,它对 JDBC 进行了封装,在分层结构中处于持久化层, 它能建立面
向对象的域模型和关系数据模型之间的映射,它大大简化了 dao 层的编码工作;
3.Mybatis 是半自动的, Hibernate 是全自动的, 就是说 Mybatis 可以配置 sql 语句, 对于
sql 调优来说是比较好的, Hibernate 会自动生成所有的 sql 语句, 调优不方便, Hibernate
用起来难度要大于 Mybatis。
Spring Boot
1、 Spring Boot 的理解
spring-boot 是由 Pivotal 团队提供的全新框架, 其设计目的是用来简化 Spring 应用的初
始搭建以及开发过程。 该框架使用了特定的方式来进行配置, 从而使开发人员不再需要定义
样板化的配置。 通过这种方式, Boot 致力于在蓬勃发展的快速应用开发领域(rapid
application development) 成为领导者。
Spring Boot 的目标不在于为已解决的问题域提供新的解决方案, 而是为平台带来另一种开
发体验, 从而简化对这些已有技术的使用。 对于已经熟悉 Spring 生态系统的开发人员来说,
Boot 是一个很理想的选择, 不过对于采用 Spring 技术的新人来说, Boot 提供一种更简洁的
方式来使用这些技术。
2、 Spring Boot 配置类
标有@Configuration 注解的类为配置类。 不需要将所有的@Configuration 放进一个单独的
类。 @Import 注解可以用来导入其他配置类。 另外, 也可以使用@ComponentScan 注解自动
收集所有的 Spring 组件, 包括@Configuration 类;
2.如果 需要 使用 基于 XML 的配 置, 可以 在注 有@Configuration 的类 上使 用附 加的
@ImportResource 注解加载 XML 配置文件;
3.可以通过将@EnableAutoConfiguration 或@SpringBootApplication 注解添加到一个
@Configuration 类上来选择自动配置。 自动配置的意思是 Spring Boot 尝试根据添加的 jar
依赖自动配置 Spring 应用。