对象-关系映射(ORM)

对象-关系映射持久化数据

随着应用程序变得越来越复杂,对持久化的需求也变得更复杂。这里介绍三种复杂的特性:

  • 延迟加载:随着对象关系变得越来越复杂,有时候并不希望立即获取完整的对象间关系,延迟加载允许我们只在需要的时候获取数据。
  • 预先抓取:与延迟加载相对,借助于预先抓取,可以使用一个查询获取完整的关联对象。预先查询的功能可以在一个操作中将他们全部从数据库中取出来,节省了多次查询的成本。
  • 级联:更改数据库中的表时会同时修改其他表。

一些可用的框架提供了这样的服务,这些服务的通用名称是对象/关系映射(ORM)。对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。实现方式是通过ORM中间件在任何一个应用的业务逻辑层和数据库层之间充当桥梁。

在持久层使用ORM工具,可以节省数千行的代码和大量的开发时间。Spring与最常用的两种ORM方案集成:Hibernate和JPA。

Hibernate是一个开源持久化框架,他不仅提供了基本的对象关系映射,还提供了ORM工具所应具有的所有复杂功能,比如缓存、延迟加载、预先抓取以及分布式缓存。JPA是基于POJO的持久化机制,它从Hibernate和JDO上借鉴了很多理念。在Spring中使用JPA需要现在Spring应用上下文中将实体管理器工厂按照bean的形式进行配置,然后编写基于JPA的Repository。

除此之外,我们非常熟悉的还有MyBatis。那么iBatis(MyBatis)与Hibernate有什么区别呢?
首先,两者都是Java中的ORM框架、屏蔽JDBC API的底层访问细节,使我们不用与JDBC API打交道,就可以完成对数据库的持久化操作。JDBC API编程流程固定,还将sql语句与Java代码混杂在了一起,经常需要拼凑sql语句,细节很繁琐。

  • iBatis的好处:屏蔽JDBC API的底层访问细节;将sql语句与Java代码进行分离;提供了将结果集自动封装称为实体对象和对象的集合的功能。queryForList返回对象集合,用queryForObject返回单个对象;提供了自动将实体对象的属性传递给sql语句的参数。
  • Hibername的好处是它可以自动生成sql语句,执行并返回java结果。

不同点:

  1. Hibername要比iBatis功能强大很多。因为Hibernate可以自动生成sql语句。
  2. iBatis需要我们自己在xml配置文件中写sql语句,Hibernate我们无法直接控制该语句,我们就无法去写特定的高效率的sql。对于一些不太复杂的sql查询,Hibernate可以很好帮我们完成,但是,对于特别复杂的查询,Hibernate就很难适应了,这时候用iBatis就是不错的选择,因为iBatis还是由我们自己写sql语句。iBatis可以出来复杂语句,而Hibernate不能。
  3. iBatis要比Hibernate简单的多。iBatis是面向sql的,不用考虑对象间一些复杂的映射关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凡心Dustin_CC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值