返回 随笔记录
七、持久层框架
博主
大约 8 分钟
七、持久层框架
范围:MyBatis、JPA/Hibernate、JDBC、连接池、DAO架构、分库分表 知识点数量:198项 返回总目录
7.1 MyBatis
7.1.1 基础使用
- 734. SqlSessionFactory - 掌握会话工厂创建,理解单例模式
- 735. SqlSession - 掌握会话使用,理解非线程安全
- 736. Mapper接口 - 掌握Mapper代理,理解动态代理原理
- 737. XML映射 - 掌握resultMap,理解嵌套查询和嵌套结果
- 738. 注解映射 - 掌握@Select/@Insert/@Update/@Delete
- 739. 参数传递 - 掌握@param和Map,理解单个参数处理
- 740. 结果映射 - 掌握自动映射和手动映射,理解驼峰配置
- 741. 动态SQL - 掌握if/choose/when/otherwise/foreach/where/set
- 742. sql片段 - 掌握include引用,理解SQL复用
- 743. 多表联查 - 掌握association和collection
7.1.2 高级特性
- 744. 一级缓存 - 掌握SqlSession级缓存,理解BaseExecutor
- 745. 二级缓存 - 掌握namespace级缓存,理解CachingExecutor
- 746. 插件机制 - 掌握Interceptor,理解@Intercepts和@Signature
- 747. PageHelper分页 - 掌握分页插件,理解物理分页和逻辑分页
- 748. 类型处理器 - 掌握TypeHandler,理解枚举和JSON处理
- 749. 批量操作 - 掌握ExecutorType.BATCH,理解JDBC批处理
- 750. 多数据源 - 掌握动态数据源,理解AbstractRoutingDataSource
- 751. 延迟加载 - 掌握lazyLoadingEnabled,理解按需加载
- 752. 自定义缓存 - 掌握Cache接口,理解Redis二级缓存
- 753. MyBatis-Plus - 掌握BaseMapper,理解代码生成器
- 754. 逻辑删除 - 掌握@TableLogic,理解软删除
- 755. 自动填充 - 掌握MetaObjectHandler,理解创建时间填充
7.1.3 源码原理
- 756. 解析器模块 - 掌握XML解析,理解XPathParser
- 757. SQL解析 - 掌握SqlSource,理解DynamicSqlSource和RawSqlSource
- 758. 反射工具 - 掌握Reflector,理解反射增强
- 759. 绑定模块 - 掌握MapperProxy,理解MapperMethod
- 760. 执行器 - 掌握SimpleExecutor/ReuseExecutor/BatchExecutor
- 761. 事务管理 - 掌握JdbcTransaction和ManagedTransaction
- 762. 配置加载 - 掌握XMLConfigBuilder,理解配置解析顺序
- 763. 插件原理 - 理解责任链模式,掌握四大对象拦截
7.2 JPA/Hibernate
7.2.1 实体映射
- 764. @Table/@Column - 掌握表字段映射,理解nullable/unique/length
- 765. @Temporal - 掌握日期映射,理解DATE/TIME/TIMESTAMP
- 766. @Enumerated - 掌握枚举映射,理解ORDINAL/STRING
- 767. @Lob - 掌握大对象映射,理解CLOB/BLOB
- 768. @Embedded - 掌握嵌入对象,理解@AttributeOverride
- 769. @MappedSuperclass - 掌握继承映射,理解基类设计
- 770. 复合主键 - 掌握@IdClass和@EmbeddedId
- 771. 继承策略 - 掌握SINGLE_TABLE/JOINED/TABLE_PER_CLASS
- 772. @Formula - 掌握公式字段,理解只读属性
- 773. @Generated - 掌握数据库生成值
7.2.2 关联映射
- 774. fetch策略 - 掌握EAGER vs LAZY,理解N+1问题
- 775. cascade类型 - 掌握PERSIST/MERGE/REMOVE/REFRESH/DETACH
- 776. orphanRemoval - 掌握孤儿删除,理解级联区别
- 777. N+1问题 - 掌握JOIN FETCH优化,理解@BatchSize
- 778. @EntityGraph - 掌握实体图,理解命名实体图
- 779. 双向关联 - 掌握mappedBy,理解关系维护方
- 780. @OrderBy - 掌握集合排序
- 781. @Where - 掌握过滤条件,理解软删除
7.2.3 Hibernate进阶
- 782. 一级缓存 - 掌握Session缓存,理解快照对比
- 783. 二级缓存 - 掌握Hibernate缓存,理解Ehcache/Redis集成
- 784. 脏检查 - 掌握变更检测,理解flush机制
- 785. 批量操作 - 掌握JDBC批处理,理解hibernate.jdbc.batch_size
- 786. 自定义类型 - 掌握UserType,理解复合类型
- 787. 拦截器 - 掌握Interceptor,理解事件监听
- 788. 多租户 - 掌握MultiTenancy,理解DATABASE/SCHEMA/DISCRIMINATOR
- 789. 悲观锁 - 掌握LockModeType.PESSIMISTIC_WRITE
- 790. 查询优化 - 掌握Query Hint,理解fetch size
- 791. 自然ID - 掌握@NaturalId,理解业务主键
7.3 JDBC与连接池
7.3.1 JDBC基础
- 792. DriverManager - 掌握驱动加载,理解SPI机制
- 793. Connection - 掌握连接获取,理解AutoCommit
- 794. Statement - 掌握SQL执行,理解SQL注入风险
- 795. PreparedStatement - 掌握预编译SQL,理解参数化查询
- 796. CallableStatement - 掌握存储过程,理解IN/OUT参数
- 797. ResultSet - 掌握结果集处理,理解TYPE_FORWARD_ONLY
- 798. 事务管理 - 掌握手动事务,理解savepoint
- 799. 元数据 - 掌握DatabaseMetaData和ResultSetMetaData
- 800. 大数据处理 - 掌握setFetchSize,理解流式查询
- 801. 批量更新 - 掌握addBatch/executeBatch
7.3.2 连接池
- 802. HikariCP - 掌握高性能连接池,理解FastList和ConcurrentBag
- 803. Druid - 掌握监控功能,理解WallFilter和StatFilter
- 804. 连接池配置 - 掌握maximumPoolSize、connectionTimeout、idleTimeout
- 805. 连接泄漏检测 - 掌握leakDetectionThreshold,理解泄漏追踪
- 806. 连接池监控 - 掌握指标暴露,理解活跃/空闲连接数
- 807. 动态数据源 - 掌握AbstractRoutingDataSource,理解路由键
- 808. 连接验证 - 掌握connectionTestQuery,理解validationTimeout
- 809. 连接池对比 - 理解HikariCP vs Druid vs Tomcat JDBC
- 810. 连接池调优 - 掌握 sizing公式,理解CPU核心数与连接数关系
7.4 持久层架构
7.4.1 DAO模式
- 811. DAO设计 - 掌握数据访问对象,理解接口+实现分离
- 812. Repository模式 - 掌握仓储模式,理解集合语义
- 813. 通用DAO - 掌握BaseDao,理解泛型DAO
- 814. 代码生成 - 掌握MyBatis Generator/JOOQ,理解逆向工程
- 815. 多表查询 - 掌握联表查询,理解INNER/LEFT/RIGHT JOIN
- 816. 复杂查询 - 掌握子查询和联合查询,理解UNION
- 817. 分页查询 - 掌握LIMIT/OFFSET,理解深分页问题
- 818. 批量操作 - 掌握批量插入/更新/删除
- 819. 审计字段 - 掌握创建时间/更新时间/创建人
- 820. 软删除 - 掌握is_deleted标记,理解逻辑删除
7.4.2 性能优化
- 821. 分页优化 - 掌握limit偏移优化,理解游标分页
- 822. 批量插入 - 掌握批量处理,理解MyBatis foreach批量
- 823. 读写分离 - 掌握主从切换,理解动态数据源路由
- 824. 分库分表 - 掌握ShardingSphere,理解分片算法
- 825. 慢查询优化 - 掌握执行计划,理解索引优化
- 826. 缓存策略 - 掌握查询缓存,理解二级缓存
- 827. 连接池优化 - 掌握连接复用,理解超时配置
- 828. SQL优化 - 掌握EXPLAIN分析,理解索引覆盖
- 829. 字段优化 - 掌握SELECT *问题,理解按需查询
- 830. 大字段处理 - 掌握TEXT/BLOB延迟加载
7.4.3 分库分表
- 831. ShardingSphere-JDBC - 掌握轻量级分片,理解Java Agent
- 832. ShardingSphere-Proxy - 掌握数据库代理,理解透明分片
- 833. 分片策略 - 掌握inline/standard/complex/hint分片
- 834. 分布式主键 - 掌握Snowflake/UUID/Leaf,理解主键生成
- 835. 分片算法 - 掌握Hash/Range/List分片
- 836. 广播表 - 掌握全库同步,理解字典表
- 837. 绑定表 - 掌握关联分片,理解避免跨库JOIN
- 838. 读写分离 - 掌握主从路由,理解负载均衡
- 839. 数据迁移 - 掌握双写迁移,理解数据校验
- 840. 全局表 - 掌握配置表同步,理解一致性维护
进度统计
- 领域:持久层框架
- 知识点总数:198项
- 已完成:0项
- 待完成:198项
实战项目建议
- 项目1:通用DAO封装 - 基于MyBatis封装通用CRUD、分页、批量操作
- 项目2:分库分表实战 - 使用ShardingSphere实现订单表分库分表
- 项目3:数据迁移工具 - 实现从单体数据库到分片数据库的在线迁移工具
常见面试问题
- MyBatis一级缓存和二级缓存的区别?什么场景下二级缓存会失效?
- Hibernate的N+1问题是什么?如何解决?
- HikariCP为什么快?核心优化点有哪些?
- 分库分表后如何解决跨库JOIN和分布式事务?
- MyBatis插件原理?四大对象可以拦截哪些方法?
推荐学习资源
- 书籍:《MyBatis源码分析》《JPA持久层开发实战》《ShardingSphere原理与实践》
- 视频:极客时间《MyBatis源码深度剖析》《分库分表实战》
- 官方:MyBatis官方文档、Hibernate官方文档、ShardingSphere官方文档
知识点测试
读完文章了?来测试一下你对知识点的掌握程度吧!
评论区
使用 GitHub 账号登录后即可发表评论,支持 Markdown 格式。
如果评论系统无法加载,请确保:
- 您的网络可以访问 GitHub
- giscus GitHub App 已安装到仓库
- 仓库已启用 Discussions 功能