文档章节

ORM和hibernate 概述

edison_kwok
 edison_kwok
发布于 2019/04/07 19:53
字数 1246
阅读 1
收藏 0

1.ORM概述

ORM(Object-Relational Mapping) 表示对象关系映射。在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中。只要有一套程序能够做到建立对象与数据库的关联,操作对象就可以直接操作数据库数据,就可以说这套程序实现了ORM对象关系映射

简单的说:ORM就是建立实体类和数据库表之间的关系,从而达到操作实体类就相当于操作数据库表的目的。

1.1为什么使用ORM

当实现一个应用程序时(不使用O/R Mapping),我们可能会写特别多数据访问层的代码,从数据库保存数据、修改数据、删除数据,而这些代码都是重复的。而使用ORM则会大大减少重复性代码。对象关系映射(Object Relational Mapping,简称ORM),主要实现程序对象到关系数据库数据的映射。

1.2常见ORM框架

常见的orm框架:Mybatis(ibatis)、Hibernate、Jpa

2.hibernate与JPA的概述

2.1hibernate概述

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

2.2JPA概述

JPA的全称是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基于ORM的规范,内部是由一系列的接口和抽象类构成。

JPA通过JDK 5.0注解描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

2.3JPA的优势

1. 标准化

  • JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。

2. 容器级特性的支持

  • JPA框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。

3. 简单方便

  • JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java 类一样简单,没有任何的约束和限制,只需要使用 javax.persistence.Entity进行注释,JPA的框架和接口也都非常简单,没有太多特别的规则和设计模式的要求,开发者可以很容易的掌握。JPA基于非侵入式原则设计,因此可以很容易的和其它框架或者容器集成

4. 查询能力

  • JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。JPA定义了独特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。

5. 高级特性

  • JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。

2.4JPA与hibernate的关系

JPA规范本质上就是一种ORM规范,注意不是ORM框架——因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口,但具体实现则由服务厂商来提供实现。

JPA和Hibernate的关系就像JDBC和JDBC驱动的关系,JPA是规范,Hibernate除了作为ORM框架之外,它也是一种JPA实现。JPA怎么取代Hibernate呢?JDBC规范可以驱动底层数据库吗?答案是否定的,也就是说,如果使用JPA规范进行数据库操作,底层需要hibernate作为其实现类完成数据持久化工作。

© 著作权归作者所有

edison_kwok
粉丝 8
博文 182
码字总数 164482
作品 0
成都
程序员
私信 提问
加载中

评论(0)

4.1 Hibernate概述

Hibernate是一个开源的对象关系映射框架,它对JDBC进行了轻量级的封装(未完全封装),使程序员可以使用面向对象的编程思想来操纵数据库。Hibernate是一个对象/关系映射的解决方法,简单的说...

JerryPan
2016/02/26
216
0
杨老师课堂之JavaEE三大框架Hibernate入门第一课

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kese7952/article/details/80998421 本篇任务 教学导航 CRM(Customer Relationship Management)客户关系管理...

杨校
2018/07/11
0
0
杨老师课堂之JavaEE三大框架Hibernate入门教程第一课

本篇任务 1. 使用Hibernate框架完成对客户的增删改查的操作 教学导航 1. 能够说出Hibernate的执行流程 2. 能够独立使用Hibernate框架完成增删改查的操作 框架和CRM项目的整体介绍 1. 什么是C...

杨校
2018/07/11
0
0
快速学习-Spring Data JPA 之 ORM概述

第1章 ORM概述[了解] ORM(Object-Relational Mapping) 表示对象关系映射。在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中。只要有一套程序能够做到建立对象与数据库的...

cwl_java
03/31
0
0
Hibernate对象

Hibernate对象 Hibernate是java (对象关系映射)ORM管理框架; Hibernate对象就是O--java实体;Hibernate通过对实体的管理在不同状态之间的转换来实现关系数据库的映射; Hibernate对象状态...

天呀鲁哇
2015/09/10
116
0

没有更多内容

加载失败,请刷新页面

加载更多

RabbitMQ消息中间件技术精讲笔记

[TOC] RabbitMQ消息中间件技术精讲笔记 错别字有点多, 改了一部分. 剩下的不影响阅读,实在没精力改了... 业界主流消息中间件介绍 MQ衡量指标 服务性能 数据存储 集群架构 主流MQ介绍 Active...

我爱吃炒鸡
昨天
17
0
从"曼巴精神"中学到的做事方式

致敬曼巴 最近一直想写一篇关于曼巴精神的文章,作为科比球迷,今年发生的事情的确让我们难过,不过生活还要继续,虽然科比已经离开了我们,但曼巴精神永存,下面从几点来讲述曼巴精神在我们...

科比可比克
昨天
31
0
使用JavaScript在文本框中的Enter键上触发按钮单击

问题: I have one text input and one button (see below). 我有一个文本输入和一个按钮(见下文)。 How can I use JavaScript to trigger the button's click event when the Enter key ......

技术盛宴
昨天
27
0
展示如何在checkout里使用quote,quote item, address, shopping cart

展示如何更改并且在定制化的时候高效应用这些模块。 以下实体继承 \Magento\Framework\Model\AbstractExtensibleModel ,所以你可以使用第4章中讨论的可扩展属性。 Quote Quotes 是客户购物车...

忙碌的小蜜蜂
昨天
28
0
面向对象思想设计原则及常见设计模式

1、面向对象思想设计原则 在实际的开发中,我们要想更深入的了解面向对象思想,就必须熟悉前人总结过的面向对象的思想的设计原则 1.1、单一职责原则 高内聚,低耦合 每个类应该只有一个职责,...

庭前云落
昨天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部