全国统一学习专线

数据持久层(Mybatis 、Hibernate )「回忆笔记」

logo
来源:七品教育

2024-05-10|已帮助:44

进入 >

IBatis是apache的一个开源项目,是一个O/R映射解决方案。iBatis最大的特点就是体积小,启动快。如果不需要太多复杂的函数,

IBatis是最简单的解决方案,可以满足您的需求,并且足够灵活。现在伊巴蒂斯已经改名为Mybatis。

There are two main types of EJB: BMP(Bean-managed persistence) and CMP (container-managed persistence), which have their own advantages and disadvantages.

BMP在bean中完成对数据库JDBC的各种调用,也就是说,在你的实体Bean中,SQL语句是显式编写的。

例如“插入”或者“选择”,并使用Datasource获取一个数据库资源和连接,从而直接添加、删除和修改数据库。

CMP是由EJB容器在数据库上自动操作的。你要做的就是在实体bean中重写SetXXX或者getXXX方法,然后在ejb-jar.xml中定义cmp-field。

Hibernate提供了相对完整的数据库结构封装,Hibernate的O/R映射实现了POJO和数据库表之间的映射,以及SQL的自动生成和执行。

程序员往往只需要定义POJO和数据库表的映射关系,然后就可以通过Hibernate提供的方法完成持久层操作。程序员甚至不需要精通SQL。

Hibernate/OJB会自动生成相应的SQL,并根据制定的存储逻辑调用JDBC接口执行。

iBATIS的重点在于POJO和SQL的映射关系。然后,通过映射配置文件,SQL所需的参数和返回的结果字段被映射到指定的POJO。与hibernate“o/r”相比,

IBATIS是“Sql映射”的ORM实现。Hibernate的优化方案

制定合理的缓存策略;

尝试使用延迟加载功能;

采用合理的会话管理机制;

使用批量抓取,设置合理的批量参数(batch _ size);

进行合理的O/R映射,设计Mybatis的优化方案。

MyBatis在会话方面与Hibernate的会话生命周期一致,同样需要合理的会话管理机制。

MyBatis还有一个二级缓存机制。MyBatis可以进行详细的SQL优化设计。SQL优化

Hibernate的查询会找出表中的所有字段,这些字段会有性能消耗。Hibernate也可以编写自己的SQL来指定要查询的字段,但是这破坏了Hibernate开发的简单性。

Mybatis的SQL是手工编写的,所以可以根据需要指定查询的字段。

Hibernate HQL语句的调优需要打印SQL,Hibernate SQL因为太丑被很多人拒绝。MyBatis的SQL是手工写的,很容易调整。

但是Hibernate有自己的日志统计。Mybatis本身没有日志统计,Log4j用于日志记录。扩展性方面

Hibernate与特定数据库的关联只需要在一个XML文件中进行配置,所有HQL语句都与特定数据库无关,所以移植性很强。MyBatis项目中的所有SQL语句都依赖于所使用的数据库。

所以对不同数据库类型的支持不好。对象管理

Hibernate是一个完整的对象/关系映射解决方案,提供了对象状态管理的功能,让开发者不再需要关注底层数据库系统的细节。也就是说,

与常见的需要管理SQL语句的JDBC/SQL持久层方案相比,Hibernate采用了更自然的面向对象的视角来持久化Java应用中的数据。

换句话说,使用Hibernate的开发人员应该始终关注对象的状态,而不管SQL语句的执行。这部分细节已经被Hibernate搞定了。

只有开发人员需要知道何时调整系统性能。

MyBatis在这一块没有文档,用户需要自己详细管理对象。抓取策略

Hibernate有一个很好的机制来抓取实体相关的对象。对于每个关联,可以详细设置是否延迟加载,并提供四种模式:关联抓取、查询抓取、子查询抓取、批量抓取。它被详细地配置和处理。

Mybatis的延迟加载是全局配置的。第二,数据持久层是一组软件服务,将应用程序与程序使用的数据源分离,为整个项目提供统一、安全、并发的数据持久化机制。优点:1。程序代码复用性强,

即使数据库发生改变,也只需要改变配置文件,而不需要重写程序代码。2.业务逻辑代码可读性强,代码中SQL语言不多,提高了程序的可读性。3.持久化技术可以自动优化,减少对数据库的访问。

提高程序运行效率。4.简化开发工作,让开发者更专注于业务逻辑的开发。5.通过对象/关系映射为业务逻辑提供面向对象的数据访问。

以上是七品教育整理的数据持久层(Mybatis 、Hibernate )「回忆笔记」全部内容。