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

目录
相关文章
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
文章介绍了MyBatis的简单增删改查操作,包括创建数据表、实体类、配置文件、Mapper接口及其XML文件,并解释了`#{}`预编译参数和`@Param`注解的使用。同时,还涵盖了resultType与resultMap的区别,并提供了完整的代码实例和测试用例。
mybatis复习02,简单的增删改查,@Param注解多个参数,resultType与resultMap的区别,#{}预编译参数
|
SQL 安全 Java
MyBatis(6)#{}和${}的区别
在MyBatis中,`#{}`和`${}`是用于在SQL语句中嵌入参数的两种方式。`#{}`用于预处理参数,可以防止SQL注入;而`${}`进行直接字符串替换,适用于动态插入表名或列名,但存在SQL注入风险。建议优先使用`#{}`,并在必要时谨慎使用`${}`。
340 3
|
SQL Java 数据库连接
MyBatis 和 Hibernate 有什么区别?
【8月更文挑战第21天】
476 0
|
Java 数据库连接 数据库
Spring Data JPA 与 Hibernate 之区别
【8月更文挑战第21天】
546 0
|
SQL Java 数据库连接
Hibernate 和 JPA 有什么区别?
【8月更文挑战第21天】
1108 0
|
SQL Java 数据库连接
|
Java 数据库连接 数据库
|
Java 数据库连接 数据库
|
Java 数据库连接 API
|
SQL Java 数据库连接