MyBatis面试题, MyBatis 自带的连接池有了解过吗?
MyBatis面试题, MyBatis 自带的连接池有了解过吗?
QA
Step 1
Q:: MyBatis 自带的连接池有了解过吗?
A:: MyBatis 自带的连接池是 MyBatis 提供的一种简单的数据库连接池实现,主要用于简化数据库连接的管理。MyBatis 提供了两种连接池类型:PooledDataSource(池化数据源)和 UnpooledDataSource(非池化数据源)。PooledDataSource 维护一个数据库连接池,复用已有的数据库连接以提高性能;而 UnpooledDataSource 则在每次请求时创建一个新的连接。
Step 2
Q:: MyBatis 是如何工作的?
A:: MyBatis 是一个持久层框架,主要用于简化数据库操作。它通过 XML 或注解的方式将 SQL 语句和 Java 方法关联起来。MyBatis 使用映射器(Mapper)接口和 XML 文件或注解来定义 SQL 语句,通过 SqlSessionFactory 创建 SqlSession 对象来执行这些 SQL 语句,并将结果映射为 Java 对象。
Step 3
Q:: MyBatis 与 Hibernate 的区别是什么?
A:: MyBatis 和 Hibernate 都是持久层框架,但它们有不同的设计理念。MyBatis 是半自动化的 ORM 框架,主要关注 SQL 语句的执行和结果映射,开发者需要手动编写 SQL。Hibernate 是全自动化的 ORM 框架,通过映射配置文件或注解将 Java 对象与数据库表关联,并自动生成 SQL 语句。MyBatis 更灵活,适合复杂查询;Hibernate 更自动化,适合标准化 CRUD 操作。
Step 4
Q:: 如何配置 MyBatis?
A:: 配置 MyBatis 需要编写一个核心配置文件(通常为 mybatis-config.
xml),其中包括数据库连接信息、映射器文件的位置以及各种配置选项。此外,还需要编写映射器(Mapper)XML 文件或使用注解来定义 SQL 语句和结果映射。最后,通过 SqlSessionFactoryBuilder 创建 SqlSessionFactory,获取 SqlSession 执行数据库操作。
Step 5
Q:: MyBatis 的缓存机制是怎样的?
A:: MyBatis 提供了一级缓存和二级缓存两种缓存机制。一级缓存是 SqlSession 级别的缓存,默认开启,同一个 SqlSession 中执行相同的查询会缓存结果。二级缓存是 Mapper 级别的缓存,需要在配置文件中显式开启,不同 SqlSession 可以共享二级缓存的数据。二级缓存使用时需要在 Mapper 映射文件中配置 <cache>
标签。