mybatis开篇

jdbc:(java data base connectivity)是java操作数据库的实现,只提供了接口,具体实现由数据库厂商,是一种桥接模式;
jdbc链接数据库:

 
 

  1. 注册驱动和住链接数据库信息,
  2. 操作connection,打开statement,
  3. 通过statement操作sql,返回结果到resultset,
  4. 使用resultset读取数据,转换为object对象,
  5. 关闭数据库相关资源。

orm:(object relational mapping) 数据表和简单的java对象(POJO plain ordinary java object)的映射关系模型;mybatis:半自动映射的框架,需要手动映射POJO,sql和映射的关系;    

映射文件包括3部分:

  • sql 
  • 映射规则
  • pojo

Hibernate的优点:

1、对象化。hibernate可以让开发人员以面相对象的思想来操作数据库。jdbc只能通过SQL语句将元数据传送给数据库,进行数据操作。而hibernate可以在底层对元数据和对象进行转化,使得开发者只用面向对象的方式来存取数据即可。

2、更好的移植性。hibernate使用xml或JPA的配置以及数据库方言等等的机制,使得hibernate具有更好的移植性,对于不同的数据库,开发者只需要使用相同的数据操作即可,无需关心数据库之间的差异。而直接使用JDBC就不得不考虑数据库差异的问题。

3、开发效率高。hibernate提供了大量的封装(这也是它最大的缺点),很多数据操作以及关联关系等都被封装的很好,开发者不需写大量的sql语句,这就极大的提高了开发者的开发效率。

4、缓存机制的使用。hibernate提供了缓存机制(session缓存,二级缓存,查询缓存),对于那些改动不大且经常使用的数据,可以将它们放到缓存中,不必在每次使用时都去查询数据库,缓存机制对提升性能大有裨益。

5、日志功能

hibernate的缺点主要有以下几点:

一、由于对持久层封装过于完整,导致开发人员无法对SQL进行优化,无法灵活使用JDBC的原生SQL,Hibernate封装了JDBC,所以没有JDBC直接访问数据库效率高。要使用数据库的特定优化机制的时候,不适合用Hibernate

 二、框架中使用ORM原则,导致配置过于复杂,一旦遇到大型项目,比如300张表以上,配置文件和内容是非常庞大的,另外,DTO满天飞,性能和维护问题随之而来

三、如果项目中各个表中关系复杂,表之间的关系很多,在很多地方把lazy都设置false,会导致数据查询和加载很慢,尤其是级联查询的时候。

四、Hibernate在批量数据处理时有弱势,对于批量的修改,删除,不适合用Hibernate,这也是ORM框架的弱点

五、不支持调用存储过程

jdbc的缺点:  

一:工作量比较大,需要连接,然后处理jdbc底层事务,处理数据类型,还需要操作Connection,Statement对象和ResultSet对象去拿数据并关闭他们。 

 二:我们对jdbc编程可能产生的异常进行捕捉处理并正确关闭资源

Mybatis:为了解决Hibernate的不足,Mybatis出现了,Mybatis是半自动的框架。之所以称它为半自动,是因为它需要手工匹配提供POJO,sql和映射关系,而全表映射的Hibernate只需要提供pojo和映射关系即可。

 Mybatis需要提供的映射文件包含了一下三个部分:sql,映射规则,pojo。

在Mybatis里面你需要自己编写sql,虽然比Hibernate配置多,但是Mybatis可以配置动态sql,解决了hibernate表名根据时间变化,不同条件下列不一样的问题,同时你也可以对sql进行优化,通过配置决定你的sql映射规则,也能支持存储过程,所以对于一些复杂和需要优化性能的sql查询它就更加方便。Mybatis几乎可以做到jdbc所有能做到的事情。


mybatis jar下载:https://github.com/mybatis/mybatis-3/releases

mybatis 项目参考:http://mybatis.org/mybatis-3/zh/index.html

mybatis-spring  项目参考:http://mybatis.org/spring/zh/index.html


猜你喜欢

转载自blog.csdn.net/qq_15140841/article/details/80660451