JDBC,JDBCTemplate,MyBatis,Hibernate比较与分析

JDBC,JDBCTemplate,MyBatis,Hibernate比较与分析

JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序

优点:运行期:快捷、高效 
缺点:编辑器:代码量大、繁琐异常处理、不支持数据库跨平台

 

 

JDBCTemplate(是Spring对jdbc的封装) 

JdbcTemplate针对数据查询提供了多个重载的模板方法,你可以根据需要选用不同的模板方法.如果你的查询很简单,仅仅是传入相应SQL或者相关参数,然后取得一个单一的结果,那么你可以选择如下一组便利的模板方法

优点:运行期:高效、内嵌Spring框架中、支持基于AOP的声明式事务 
缺点:必须于Spring框架结合在一起使用、不支持数据库跨平台、默认没有缓存 MyBatis (对JDBC的封装) .

 

 

 

 

MyBatis的前身就是iBatis,iBatis本是apache的一个开源项目,2010年这个项目由apahce sofeware foundation 迁移到了google code,并且改名

 

总体来说 MyBatis 主要完成两件事情

根据JDBC 规范建立与数据库的连接 
通过Annotaion/XML+JAVA反射技术,实现 Java 对象与关系数据库之间相互转化

MyBatis优缺点如下:

优点: 高效、支持动态、复杂的SQL构建, 支持与Spring整合和AOP事务、结果集做了轻量级Mapper封装、支持缓存 
缺点:不支持数据库跨平台, 还是需要自己写SQL语句.

 

 

Hibernate(对JDBC的封装) 

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用

Hibernate的核心类和接口一共有6个, 分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration这6个核心类和接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制

 

JPA(Java Persistence API)

是JavaEE5平台上的标准的对象:关系映射和持久管理接口.

它是一个基于POJO的标准ORM持久化模型,是EJB3规范的组成部分,代替了实体Bean,实体Bean被定义成EJB 2.1 规范的一部分.使用JPA,你就可以插入任何实现了JPA规范的持久性提供程序,而不是随JavaEE容器一起提供的缺省的持久性提供程序是什么就用什么.

 

JPA应该用在标准的基于Java的持久性解决方案的时候.JPA支持继承和多态这两种面向对象编程的特性.JPA的缺点是其需要一个实现了自身的提供程序.

 

c3p0,dbcp与druid 三大连接池的区别

 

DBCP是一个依赖Jakarta
commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP。

 

c3p0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection
和Statement 池的DataSources 对象

 

 

Druid

阿里出品,淘宝和支付宝专用数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个
ProxyDriver,一系列内置的JDBC组件库,一个 SQL Parser。支持所有JDBC兼容的数据库,包括
Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。

Druid针对Oracle和MySql做了特别优化,比如Oracle的PS Cache内存占用优化,MySql的ping检测优化。

 

Druid提供了MySql、Oracle、Postgresql、SQL-92的 SQL的完整支持,这是一个手写的高性
能SQL Parser,支持Visitor模式,使得分析SQL的抽象语法树很方便。简单SQL语句用时10微秒以内,复
杂SQL 用时30微秒。通过Druid提供的SQL Parser可以在JDBC层拦截SQL做相应处理,比如说分库分表、审计等。Druid防御SQL注入攻击的 WallFilter就是通过Druid的SQL Parser分析语义实现的。

 

 

 

 

 

 

 

基本配置:

 

 

 

posted @ 2020-04-17 16:50  LadyBirdsBeatles  阅读(354)  评论(0)    收藏  举报