JPA与ORM以及Hibernate
有没有办法让程序员彻底抛弃书写SQL思想,完全的使用面向对象思想开发软件呢?
需要一种可行的ORM框架。
什么是ORM?
不同的数据库使用的SQL语法不同,比如PL/SQL(Oracle)和T/SQL(SQL SERVER);
同样的功能不同的数据库有不同的实现方式;
程序过分依赖SQL对程序的移植性及扩展维护等带来很大的麻烦。
ORM框架包括Entity EJB、Hibernate、iBATIS、TopLink等,很多公司还开发了自己的ORM框架来解决项目的持久化。然而每种ORM框架都有自己的语法,他们之间不能直接通用。
对开发者而言,很多数据库持久化的的操作都是类似的,项目中采取的框架不同会造成代码的重复性。那么有没有办法来改善这种情况呢?
回想JDBC可以作为为多种关系数据库提供相同的访问方式,使开发人员方便于编写数据库应用程序。那么是不是可以有一种规范可以像JDBC一样提供不同ORM框架的统一规范。
Sun公司为了简化现有Java EE和Java SE应用的对象持久化的开发工作,整合ORM技术,结束现在Hibernate、iBATIS、TopLink等ORM框架各自为营的局面,提出了新的JPA ORM规范。
1) JPA为POJO提供持久化标准规范。
2) JPA的使用:
Hibernate与TopLink以及OpenJpa都提供了JPA的实现。
3) JPA主要技术:
JPA的总体思想和现有Hibernate、TopLink、JDO等ORM框架大体一致。总的来说,JPA包括以下三方面的技术:
A. ORM映射元数据:JPA通过注解或XML描述映射关系,并将运行中的实体对象持久化到数据库中。
B. JPA持久化API:使用面向对象的思想,操作实体对象,进行增删改查的操作。至于怎么操作,由框架思考这件事。这必将大大的节省了开发时间,提 高了开发效率。
C. 查询语言:使用面向对象的思想避免了同程序的SQL语句产生交集。
4) JPA与Hibernate
注意,前面说过了,JPA是统一了各种ORM框架的接口,所以说,可以把JPA理解为它并不是新的ORM框架,是接口,是规范,是工具。就像JDBC不是数据库一样,也没有办法代替数据库。同理,JPA也不是ORM框架,我们可以透过JPA使用各种ORM,实现各项目之间的移植性,这是做到低耦合、可扩展的程序设计。
Hibernate是ORM框架,它实现了JPA的规范。
实现JPA接口也并不意味着可以替代Hibernate,Hibernate的索引功能,缓存功能并没有相应的接口,所以有些时候还是需要Hibernate的。但是!凡是JPA能实现的功能都用JPA来实现,以此来减少框架之间的耦合性。
PS:本人也在不断的学习中,这是在翻看了各种Hibernate,ORM,JPA资料后做出的总结,如果有不恰当的地方欢迎指出,大家互相交流,共同进步!
JPA与ORM以及Hibernate的更多相关文章
- 学习ORM框架—hibernate(三):跟踪持久化对象状态,掌握对象持久化
准备工作 在上篇博客中学习ORM框架—hibernate(一):初识hibernate,通过简单的实例说明O和R的映射过程.本篇博客将要介绍hibernate中持久化对象的状态,并使用hibernat ...
- Spring Data JPA、MyBatis还有Hibernate有什么区别
原文:https://www.imooc.com/article/19754?block_id=tuijian_wz Spring Data JPA.MyBatis还有Hibernate有什么区别 2 ...
- jpa遇到的 org.hibernate.PersistentObjectException: detached entity passed to persist异常
jpa遇到的 org.hibernate.PersistentObjectException: detached entity passed to persist异常 发生这个原因是因为我们已经在实体 ...
- JPA、ORM
JPA:全称:Java Persistence API 解释:Java持久层API (接口规范) ORM映射元数据 JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系 ...
- jpa是什么,和hibernate 有什么关系
JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.JPA 的目标之一是制定一个可以由很多供应商实现的API,并且开发人员可以编码来实现该API,而不 ...
- 12 Spring Data JPA:orm思想和hibernate以及jpa的概述和jpa的基本操作
spring data jpa day1:orm思想和hibernate以及jpa的概述和jpa的基本操作 day2:springdatajpa的运行原理以及基本操作 day3:多表操作,复杂查询 d ...
- Hibernate之ORM与Hibernate
ORM: ORM是 Object /Relation Mapping,对象/关系数据库映射. 目前比较流行的编程语言,如java ,c#等,它们都是面向对象的编程语言,而目前比较主流的数据库产品,如O ...
- springboot~JPA把ORM统一起来
JPA介绍 JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据.他的出现主要是为了简 ...
- ORM和Hibernate的配置方式
分层体系结构: 逻辑上一般分为三层:表述层(提供与用户交互的界面).业务逻辑层(实现各种业务的逻辑).数据库层(负责存放和管理应用的持久性业务数据). 物理上一般分为两层:物理层(每一层都运行在网络上 ...
随机推荐
- 开元硬件平台 Arduino
开放源代码的电路图设计,程序开发接口免费下载,也可依个人需求自己修改. Arduino不仅仅是全球最流行的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势.Arduino简单的开发方式使得开发 ...
- ocp 1Z0-047 131-276题解析
131. Which view would you use to display the column names and DEFAULT valuesfor a table?A. DBA_TABLE ...
- UVALive 7276 Wooden Signs (DP)
Wooden Signs 题目链接: http://acm.hust.edu.cn/vjudge/contest/127406#problem/E Description http://7xjob4. ...
- POJ 2240 Arbitrage (求负环)
Arbitrage 题目链接: http://acm.hust.edu.cn/vjudge/contest/122685#problem/I Description Arbitrage is the ...
- UVaLive 7360 Run Step (排列组合,枚举)
题意:给定一个数 n ,表示一共有 n 步,然后你可以迈一步也可以迈两步,但是左腿和右腿的一步和两步数要一样,并且两步数不小于一步数,问你有多少种方式. 析:虽然是排列组合,但还是不会做.....水啊 ...
- CodeForces 589A Email Aliases (匹配,水题)
题意:给定于所有的邮箱,都是由login@domain这样的形式构成,而且字符都是不区分大小写的. 我们有一种特殊类型的邮箱——@bmail.com, 这种邮箱除了不区分大小写外—— 1,'@'之前的 ...
- android WebView将新浪天气为我所用 ------>仅供娱乐
新浪天气提供了一个网页 http://w.sina.com 浏览器访问: 这效果还可以了哦,直接用webview加载出来,效果也可以了哦,不过,这不是我要的.我不希望在我写的应用里到处铺满si ...
- C#获取当前应用程序所在路径及环境变量
一.获取当前文件的路径 string str1=Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名. string st ...
- Installation Directory must be on a local hard drive解决办法
今天带着公司的电脑来杭州这边,同事发来一个Sliksubversion.msi来进行安装,由于系统是win8.1的,直接点击安装不了,真的是醉了,于是乎发挥度娘的力量找到了答案,这里贴出来,供大家来参 ...
- 一,彻底理解第一个C语言程序 Hello World
对于初学者来说,第一个程序一般都是hello world,而且是照着书上一点一点敲的.所以,在初学者眼中,敲出来的第一个程序代码不过是一堆看不懂的英语.而事实上,C语言作为一门语言,是有语法的.所以这 ...