有没有办法让程序员彻底抛弃书写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,实现各项目之间的移植性,这是做到低耦合、可扩展的程序设计。

HibernateORM框架,它实现了JPA的规范。

实现JPA接口也并不意味着可以替代Hibernate,Hibernate的索引功能,缓存功能并没有相应的接口,所以有些时候还是需要Hibernate的。但是!凡是JPA能实现的功能都用JPA来实现,以此来减少框架之间的耦合性

PS:本人也在不断的学习中,这是在翻看了各种Hibernate,ORM,JPA资料后做出的总结,如果有不恰当的地方欢迎指出,大家互相交流,共同进步!

JPA与ORM以及Hibernate的更多相关文章

  1. 学习ORM框架—hibernate(三):跟踪持久化对象状态,掌握对象持久化

    准备工作 在上篇博客中学习ORM框架—hibernate(一):初识hibernate,通过简单的实例说明O和R的映射过程.本篇博客将要介绍hibernate中持久化对象的状态,并使用hibernat ...

  2. Spring Data JPA、MyBatis还有Hibernate有什么区别

    原文:https://www.imooc.com/article/19754?block_id=tuijian_wz Spring Data JPA.MyBatis还有Hibernate有什么区别 2 ...

  3. jpa遇到的 org.hibernate.PersistentObjectException: detached entity passed to persist异常

    jpa遇到的 org.hibernate.PersistentObjectException: detached entity passed to persist异常 发生这个原因是因为我们已经在实体 ...

  4. JPA、ORM

    JPA:全称:Java Persistence API 解释:Java持久层API (接口规范) ORM映射元数据 JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系 ...

  5. jpa是什么,和hibernate 有什么关系

    JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中.JPA 的目标之一是制定一个可以由很多供应商实现的API,并且开发人员可以编码来实现该API,而不 ...

  6. 12 Spring Data JPA:orm思想和hibernate以及jpa的概述和jpa的基本操作

    spring data jpa day1:orm思想和hibernate以及jpa的概述和jpa的基本操作 day2:springdatajpa的运行原理以及基本操作 day3:多表操作,复杂查询 d ...

  7. Hibernate之ORM与Hibernate

    ORM: ORM是 Object /Relation Mapping,对象/关系数据库映射. 目前比较流行的编程语言,如java ,c#等,它们都是面向对象的编程语言,而目前比较主流的数据库产品,如O ...

  8. springboot~JPA把ORM统一起来

    JPA介绍 JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据.他的出现主要是为了简 ...

  9. ORM和Hibernate的配置方式

    分层体系结构: 逻辑上一般分为三层:表述层(提供与用户交互的界面).业务逻辑层(实现各种业务的逻辑).数据库层(负责存放和管理应用的持久性业务数据). 物理上一般分为两层:物理层(每一层都运行在网络上 ...

随机推荐

  1. linux - 怎么自动填写有交互的shell脚本 - SegmentFault

    linux - 怎么自动填写有交互的shell脚本 - SegmentFault TCL/Expect交互式自动化测试概要 - - ITeye技术网站 expect是一种基于TCL,能与交互式程序进行 ...

  2. Linux之一次性安装开发工具:yum groupinstall Development tools

    [spark@sparksinglenode ~]$ yum grouplist | moreLoaded plugins: fastestmirror, refresh-packagekit, se ...

  3. homework08

    1.局部变量生命周期 #include "iostream.h" ;} int main() { ; add1(n); cout << n << endl; ...

  4. unix 时间

    from_unixtime()是MySQL里的时间函数 mysql>SELECT FROM_UNIXTIME( 1249488000, '%Y%m%d' ) ->20071120 mysq ...

  5. Linux性能监测

    1.Linux性能监测:监测目的与工具介绍 看了某某教程.读了某某手册,按照要求改改某些设置.系统设定.内核参数就认为做到系统优化的想法很傻很天真:)系统优化是一项复杂.繁琐.长期的工作,优化前需要监 ...

  6. 从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式(二)

    本文转载自 http://blog.csdn.net/cutesource/article/details/6192145 下面再来看看Tomcat是如何使用NIO来构架Connector这块的. 先 ...

  7. UITableView section header 不固定

    iOS系统自带的UITableView,当数据分为多个section的时候,在UITableView滑动的过程中,默认section header是固定在顶部的,滑动到下一个section的时候,下一 ...

  8. 让sublime text 3默认新建GBK文件

    想让sublime text支持显示或者保存中文,需要安装插件convertToUTF8,具体安装可以问度娘. 安装插件以后,想让保存的html文件支持中文,可以通过ctrl+shift+C来完成.但 ...

  9. VS清除缓存

    今天不小心在项目里面把一个 ==  写成了 =,结果数据一下子崩溃了. 后来测试,发现,换一个编译环境,或者换一个编译模式比如debug改成release,就好使了. 1 测试流程 2 测试数据 3 ...

  10. 栈的应用1——超级计算器(中缀与后缀表达式)C语言

    这里要学的程序主要用来实现一个功能——输入表达式输出结果,也就是一个计算器.效果如下: 这个程序主要有两个步骤:1.把中缀表达式转换为后缀表达式:2.计算后缀表达式的结果. 首先先明白几个问题: 1. ...