乐趣区

关于java:ORMPersistence自定义持久层框架

简介

环境要求

  • 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 因而咱们须要写一个拦截器,必须有接口类
退出移动版