对Hibernate的理解及和MyBatis的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对Hibernate的理解及和MyBatis的区别相关的知识,希望对你有一定的参考价值。

Hibernate对象的三种状态

瞬时态:

一个Java对象创建之后,还没新增到数据库之前的状态

特点:

(1)不和Session实例关联

(2)在数据库中没有和瞬时对象关联的记录

持久态:

当调用save()或者是saveOrUpdate()方法之后的状态,保存到数据库的状态

特点:

(1)和Session实例关联

(2)在数据库中有和持久对象关联的记录

游离态:

当调用session的Close方法或者清空session之后对象的状态

特点:

(1)本质上和瞬时对象相同

(2)只是比瞬时对象多了一个数据库记录标识值id.

hibernate拒绝连接、服务器崩溃的原因

  1. db没有打开
  2. 网络连接可能出了问题
  3. 连接配置错了
  4. 驱动的driver,url是否都写对了
  5. LIB下加入相应驱动,数据连接代码是否有误
  6. 数据库配置可能有问题
  7. 当前联接太多了,服务器都有访问人数限制的
  8. 服务器的相应端口没有开,即它不提供相应的服务

MyBatis与Hibernate的不同

相同点:

屏蔽jdbcapi的底层访问细节,使用我们不用与jdbcapi打交道,就可以访问数据。

jdbcapi编程流程固定,还将sql语句与java代码混杂在了一起,经常需要拼凑sql语句,细节很繁琐。

Mybatis的好处:

屏蔽jdbcapi的底层访问细节;将sql语句与java代码进行分离;

提供了将结果集自动封装称为实体对象和对象的集合的功能,queryForList返回对象集合,用queryForObject返回单个对象;

提供了自动将实体对象的属性传递给sql语句的参数。

Hibernate是一个全自动的orm映射工具,它可以自动生成sql语句,Mybatis需要我们自己在xml配置文件中写sql语句,hibernate要比Mybatis功能负责和强大很多。

因为hibernate自动生成sql语句,我们无法控制该语句,我们就无法去写特定的高效率的sql。

对于一些不太复杂的sql查询,hibernate可以很好帮我们完成,但是,对于特别复杂的查询,****hibernate****就很难适应了,这时候用Mybatis就是不错的选择,因为ibatis还是由我们自己写sql语句。

以上是关于对Hibernate的理解及和MyBatis的区别的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate 与 mybatis 区别

hibernate与mybatis的区别

一起了解Hibernate与Mybatis的区别优缺点对比

hibernate和 mybatis的区别

MyBatis和Hibernate的区别

MyBatis学习总结_18_MyBatis与Hibernate区别