对Hibernate的理解及和MyBatis的区别

简介: 对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语句。

目录
相关文章
|
2月前
|
SQL Java 数据库连接
hibernate和mybatis的区别
hibernate和mybatis的区别
|
25天前
|
SQL XML Java
蓝易云 - ibatis与mybatis的区别
总的来说,MyBatis在功能性和易用性上都优于iBatis,是iBatis的改进版。
9 2
|
5天前
|
SQL Java 数据库连接
Java面试题:简述ORM框架(如Hibernate、MyBatis)的工作原理及其优缺点。
Java面试题:简述ORM框架(如Hibernate、MyBatis)的工作原理及其优缺点。
5 0
|
18天前
|
前端开发 Java 数据库连接
程序技术好文:电脑睡眠(sleep)和休眠(Hibernate)的区别,以及休眠功能的设置
程序技术好文:电脑睡眠(sleep)和休眠(Hibernate)的区别,以及休眠功能的设置
|
18天前
|
前端开发 Java 数据库连接
技术好文共享:电脑睡眠(sleep)和休眠(Hibernate)的区别,以及休眠功能的设置
技术好文共享:电脑睡眠(sleep)和休眠(Hibernate)的区别,以及休眠功能的设置
|
24天前
|
SQL Java 数据库连接
【MyBatis】MyBatis操作数据库(二):动态SQL、#{}与${}的区别
【MyBatis】MyBatis操作数据库(二):动态SQL、#{}与${}的区别
20 0
|
2月前
|
SQL 缓存 Java
|
2月前
|
SQL Java 数据库连接
Java从入门到精通:3.1.2深入学习Java EE技术——Hibernate与MyBatis等ORM框架的掌握
Java从入门到精通:3.1.2深入学习Java EE技术——Hibernate与MyBatis等ORM框架的掌握
|
2月前
|
SQL Java 数据库连接
MyBatis #与$的区别以及动态SQL
MyBatis #与$的区别以及动态SQL
22 0
|
2月前
|
Java 数据库连接 mybatis
MyBatis中Mapper接口和dao区别是什么?
MyBatis中Mapper接口和dao区别是什么?
103 0