自学JPA-01-概述

JPA和Hibernate的关系

  • JPA 是 hibernate 的一个抽象(就像JDBC和JDBC驱动的关系):
    • JPA 是规范:JPA 本质上就是一种  ORM 规范,不是ORM 框架 —— 因为 JPA 并未提供 ORM 实现,它只是制订了一些规范,提供了一些编程的 API 接口,但具体实现则由 ORM 厂商提供实现
    • Hibernate 是实现:Hibernate 除了作为 ORM 框架之外,它也是一种 JPA 实现
  • 从功能上来说, JPA 是 Hibernate 功能的一个子集

JPA供应商

  • JPA 的目标之一是制定一个可以由很多供应商实现的 API,目前Hibernate 3.2+、TopLink 10.1+ 以及 OpenJPA 都提供了 JPA 的实现
  • Hibernate
    • JPA 的始作俑者就是 Hibernate 的作者
    • Hibernate 从 3.2 开始兼容 JPA
  • OpenJPA
    • OpenJPA  是 Apache 组织提供的开源项目
  • TopLink
    • TopLink 以前需要收费,如今开源了

JPA的优势

  • 标准化:  提供相同的 API,这保证了基于JPA 开发的企业应用能够经过少量的修改就能够在不同的 JPA 框架下运行。
  • 简单易用,集成方便:  JPA 的主要目标之一就是提供更加简单的编程模型,在 JPA 框架下创建实体和创建 Java  类一样简单,只需要使用 javax.persistence.Entity 进行注释;JPA 的框架和接口也都非常简单,
  • 可媲美JDBC的查询能力:  JPA的查询语言是面向对象的,JPA定义了独特的JPQL,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。
  • 支持面向对象的高级特性: JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,最大限度的使用面向对象的模型

JPA 包括 3方面的技术

  • ORM  映射元数据:JPA 支持 XML 和  JDK 5.0 注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。
  • JPA 的 API:用来操作实体对象,执行CRUD操作,框架在后台完成所有的事情,开发者从繁琐的 JDBC和 SQL代码中解脱出来。
  • 查询语言(JPQL):这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序和具体的  SQL 紧密耦合。
时间: 2024-11-07 04:51:10

自学JPA-01-概述的相关文章

mongodb 学习笔记 01 -- 概述,安装,运行

mongodb 概述 mongodb 是文档型NoSQL数据库,存储 bson–> json二进制.内部执行引擎为js解释器,把文档存储成bson结构,在查询时,转化为js对象.并可以通过js语法操作. mongodb 与传统数据库比 传统数据库是结构化数据库,列的个数类型都一样 文档数据库 以文档为单位 比如: { id:1, name: "billvsme", age:21, } { id:2, name: "zhangshan", phone:12313

[菜鸟成长记]iOS开发自学笔记01-向helloworld致敬

我有一个梦想就是成为一个iOS开发.........菜鸟,老规矩,一切从helloworld开始. iOS8伴随着iphone6/6plus而来,Xcode6伴随着iOS8而来,苹果更新换代的速度依然很快,从硬件到软件,每次更新就意味着开发者们又要面临着一次次的恶补,当然,像我这样励志成为iOS开发菜鸟的人来说,目前还没有到面临这些问题的烦恼,我只需要专心做好我的hello world小程序,就像我从前无数次地在其他平台一样. 首先打开Xcode后从模板中选择single view applic

自学Android 01 基础

(所有学习资料来自mars和<第一行代码>) *系统构架: 我们在application framework上进行开发,具体要学习的是如何使用里面的类,如何实例化 *基于组件的应用程序开发: 活动:我们看得到的东西都是放在活动中.它是界面,用户进行交互. 服务:后台的,默默的运行,用户看不见. 广播接收器:接受来自各处的广播信息(监听手机发生的所有事情,监听系统一切行为),比如电话,短信,手机快没电了:当然我们也可以发出信息. 内容提供器:为应用程序之间的共享数据提供可能,比如我们想读取通讯录

Lua语言自学之01.基础概念的理解

编程不只是这么简单,它的思维是理性的编程思维,操纵机器干事本来就不是一件简单的事,要干什么,该怎么做,怎么做得才好. 脚本的概念在程序中十分重要,在游戏开发领域,它更是决定性的.脚本语言让程序员可以区分游戏开发的"硬核部分"和"软核部分"."硬核部分"一般对计算机性能要求很高,在开发过程中变更较少,重要性很高.图形引擎和人工智能模块是其中的代表.这些模块最适合使用C或者C++这样的语言开发,可以提供更好的性能."软体部分"控制

01 概述 网络分层

讲的是这本书: Book:<TCP/IP 详解> 内容提要 网络分层 OSI 分层模型 分层原则(软件产品也是一样): 每层有清晰的边界,每层有自己的功能.每层相互独立,互不影响. 举例: 北京老板想发月饼(中秋节),所想他想告诉上海公司的老板也发月饼. 应用层: 北京老板说了要发月饼. 表示层: 但是老板肯定说的是白话, 需要贴身秘书帮着修饰一下话语. (修饰应用层数据,修饰的冠冕堂皇一些) 会话层: 部门秘书把信放到信封里,然后写上地址, 源 / 目的地址就等于主机上的两个应用进程. (所

【Java 语言生态篇】Junit 测试单元

01 概述 JUnit是一个由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework).Junit测试是白盒测试.JUnit有它自己的JUnit扩展生态圈.多数Java的开发环境都已经集成了JUnit作为单元测试的工具.[1] JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试.他是用于单元测试框架体系xUnit的一个实例(用于java语言).它包括以下特性: 1.用于测试期望结果的断言(Asser

大数据分享

<IT十八掌大数据内功修炼到企业实战2.0课程>免费自学马拉松计划   1.关于十八掌 学了大数据,还是不敢找工作?  内功不够!跟随十八掌掌门徐培成炼内功! 十八掌教育努力打造一套地表最强[大数据+云计算]内功修炼系列课程,不拿"地摊货.三脚猫.低级入门"课程来忽悠学员!全部干货,拒绝忽悠,拒绝废话,上来就干!庖丁解牛,剥茧抽丝,行云流水,大彻大悟!十八掌带你进行真正的"内功修炼",练就软件开发十八般武艺,行走江湖,所向披靡! 2.<IT十八掌大

《彪悍的人生不需要解释--罗永浩》

本文地址:http://www.cnblogs.com/aiweixiao/p/7434610.html 原文地址 2017-08-20 微信号wozhuzaisi 程序员的文娱情怀 一.引子 他,高二辍学,摆地摊,烤肉串:他,直接求职俞敏洪,三次试讲成为新东方GRE老师:他,创办牛博网,几度被封:他创办英语培训学校:他斗西门子.斗方舟子.从他宣布开始做手机成为了锤子科技 CEO.他是一个当今中国最有争议的互联网人物之一,他就是锤子科技CEO及创始人--罗永浩. 罗永浩-彪悍的人生不需要解释 二

《梵高》-孤独的天才

本文地址:http://www.cnblogs.com/aiweixiao/p/7604848.html 原文地址(微信公众号): 扫描关注微信公众号 一.引子 当我画一个太阳,我希望人们感觉它在以惊人的速度旋转,正在发出骇人的光热巨浪.当我画一片麦田,我希望人们感觉到麦子正朝着它们最后的成熟和绽放努力.当我画一棵苹果树,我希望人们能感觉到苹果里面的果汁正把苹果皮撑开,果核中的种子正在为结出果实奋进.当我画一个男人,我就要画出他滔滔的一生.如果生活中不再有某种无限的.深刻的.真实的东西,我将不再

【文学文娱】《人类简史》--从动物到上帝

本文地址:http://www.cnblogs.com/aiweixiao/p/7604858.html 原文地址(微信公众号):程序员的文娱情怀 一.引子 早晨晨光熹微的时候,睡眼惺忪的时候,就打开微信读书app,开始了<人类简史>的听书. <人类简史>--你值得拥有 尔后在北花园到传媒大学地铁站的路上,一路骑行,一路手拿手机收听. 在地铁奔驰的路上,在拥挤的男男女女中颤巍巍拿出来我的iphone 5s,看是翻阅这书. 到四惠东与媳妇惜别,又开始在艳阳蓝天里收听关于远古人类的故事