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

目录
相关文章
|
21天前
|
SQL Java 数据库连接
MyBatis 和 Hibernate 有什么区别?
【8月更文挑战第21天】
13 0
|
21天前
|
Java 数据库连接 数据库
Spring Data JPA 与 Hibernate 之区别
【8月更文挑战第21天】
11 0
|
21天前
|
SQL Java 数据库连接
Hibernate 和 JPA 有什么区别?
【8月更文挑战第21天】
50 0
|
21天前
|
SQL Java 数据库连接
|
21天前
|
Java 数据库连接 数据库
|
21天前
|
Java 数据库连接 数据库
|
21天前
|
Java 数据库连接 API
|
21天前
|
SQL Java 数据库连接
|
21天前
|
SQL Java 数据库连接
|
21天前
|
Java 数据库连接 应用服务中间件