简介
环境要求
- jdk-1.8
- idea
- https://github.com/sumcolin/o…
细则
- ORM-1-Traditional
- ORM-2-Persistence
- ORM-Question
ORM-1-Traditional
Traditional Way
- 数据库驱动加载
- 通过驱动建设数据库链接
- 建设预处理 sql 语句
- 获取后果集
- 开释资源
question
- 导致硬编码过多,不易保护
- 导致频繁的调用数据库链接,资源耗费大
resolve way
- 应用数据库连接池,作为数据库连贯
- 应用 xml 文件治理 sql 硬编码,以及后果集解决
- 依赖反射与内省等底层技术,主动将实体与表进行属性与字段的主动映射
ORM-2-Persistence
Persistence Way
思路
- 数据库配置参数、sql 语句进行 xml 配置文件化
- 通过解析配置文件,加载数据库源配置与 sql 语句对象化
- 通过工厂模式实现 sqlSession 的生成
- 通过反射与动静代理实现数据库的查问操作
初始化
- 编辑 xml 文件
- 数据库源相干配置编辑到 sqlMapConfig.xml
- sql 语句配置 xxxMapper.xml
- 通过 dom4j 对资源文件 xml 进行解析,并存储到数据库 pojo 对象
Sql 执行前
- 对其办法进行 JDK 动静代理加强,实现面向接口开发
sql 执行
- 应用 BoundSql 办法使其 sql 参数类型和语句进行调整,返回失常的 sql 与 preparedStatement
- 调用原生 JDBC 流程
Sql 执行后
- 通过内省对 resultSet 进行封装
ORM-Question
Java- 数据库连接池
罕用数据库连接池
- HikariCP
- C3P0
- BoneCP
- Druid
起因
- 创立线程是一个低廉的操作,如果有大量的小工作须要执行,并且频繁地创立与销毁线程。实际上会耗费大量的系统资源,往往创立与销毁时耗费线程所消耗的工夫比执行时的线程工夫更长。所以,为了提高效率,会抉择线程池
益处
- 数据库连贯能够复用线程链接,缩小频繁的数据库链接与敞开。
原理
- 连接池就是为数据库连贯建设一个“缓冲池”。事后在缓冲池中放入肯定数量的连贯,当须要建设数据库连贯时,只需从“缓冲池”中取出一个,应用结束之后再放回去。
- 通过连接池,咱们只有在系统启动时事后加载好一些连贯对象,当须要的时候再也不须要繁琐的步骤,现成的给你筹备好啦,拿了就用,用完了放回去下次再接着用,零碎加载的速度会变快,性能也会随之减少了
反射与内省
动静代理
- JDK 动静代理,实现形式:生成代理对象的时候须要一个拦截器 InvocationHandler 因而咱们须要写一个拦截器,必须有接口类