Java面试必备:事务特性、数据库隔离级别与Spring核心概念

需积分: 9 0 下载量 33 浏览量 更新于2024-08-05 收藏 46KB MD 举报
"Java面试笔记,涵盖了Java开发中的关键知识点,包括事务的四大特性、数据库隔离级别、MyBatis的一级缓存和二级缓存、MySQL的存储引擎区别以及Spring的核心思想等。\n\n## 事务的四大特性\n事务是数据库操作的基本单元,其主要特性包括:\n\n### 原子性 (Atomicity)\n事务中的每个操作要么全部完成,要么全部不完成,不会留下部分执行的结果。如果在事务执行过程中发生错误,系统会回滚到事务开始前的状态。\n\n### 隔离性 (Isolation)\n隔离性确保了事务的执行互不影响,直到事务提交后,其更新才会对其他事务可见。这有助于防止脏读,即一个事务读取到另一个未提交事务的数据。\n\n### 一致性 (Consistency)\n事务执行前后,数据库保持一致状态,数据的完整性得到保证。例如,事务执行前后的数据总数应保持不变,防止出现脏读、不可重复读等问题。\n\n### 持久性 (Durability)\n一旦事务提交,其对数据库的修改将会永久保存,即使系统崩溃也不会丢失。\n\n## 数据库隔离级别\n数据库通常提供四种隔离级别以平衡并发性和数据一致性:\n\n- 脏读:允许读取未提交的数据,可能导致不准确的信息。 - 不可重复读:在同一事务内多次读取同一数据可能得到不同结果,因为其他事务可能已经修改了数据。 - 幻读:在同一个事务中,多次执行相同查询可能会得到不同的结果集,因为其他事务可能插入了新行。\n\n## MyBatis缓存\nMyBatis的一级缓存和二级缓存用于提高数据库查询效率:\n\n### 一级缓存\n默认启用,作用于Session级别。在同一个Session中,对于相同的SQL语句和参数,MyBatis会首先查找缓存,避免重复的数据库查询。\n\n### 二级缓存\n需要手动配置,其作用范围扩大到整个应用。开启后,多个Session间可以共享缓存,进一步提高性能。\n\n## MySQL存储引擎\nMySQL主要的两种存储引擎有MyISAM和InnoDB,它们各有特点:\n\n- MyISAM:不支持外键,采用表级锁定,适合读多写少的场景。在插入数据时会锁定整个表,但查询总行数时不需要全表扫描。\n- InnoDB:支持外键和行级锁定,更适合需要事务处理的场景。查询总行数时需要全表扫描,但提供了更好的并发性能。\n\n## Spring核心思想\nSpring框架基于以下主要设计原则:\n\n### 控制反转 (IOC)\n将对象的创建和管理从代码中分离,交由Spring容器负责,使得组件间的依赖关系解耦。\n\n### 依赖注入 (DI)\n通过容器在运行时动态地将依赖关系注入到组件中,而不是由组件自己去寻找依赖。\n\n### 面向切面编程 (AOP)\nSpring的AOP模块允许开发者定义横切关注点,如日志、事务管理等,这些关注点可以被编织到应用程序的多个点上,提高了代码的复用性和模块化。\n\n这些面试笔记覆盖了Java开发中重要的理论和实践知识,对于准备面试或提升个人技术水平都非常有帮助。"