为什么80%的码农都做不了架构师?>>>   

概述

自己用JPA很长时间了,但没有系统学习,通过课程自学下平时比较少碰到的内容,并笔记。

JPA概述

什么是JPA

JPA是Java Persistence API的简称,Java持久层API。
Sun公司提取了之前EJB规范惨痛失败的经历。充分吸收了Hibernate基础上。

为什么需要JPA

JDBC作者开发了Hibernate。目标是Java程序员不懂SQL语句,可以来操作数据库。

Hibernate和JPA的关系

对JDBC进行了轻量级封装。将POJO与数据库表建立映射关系,是全自动的ORM框架。
JPA是Java持久化规范。切换到其他ORM是可行的。例如从Hibernate切换到EclipseLink。
JPA是持久化规范,而Hibernate是实现。

JPA的优缺点

JDBC的优缺点

本质:Java对象和关系数据库的转换
有点:直接操作数据库的最底层,性能是最高的(前提有相应的经验)
缺点:

  • 使用复杂(重复代码太多)
  • 移植数据库代价大,改动多
    • 逐渐的生成方式不同(MySQL使用自增,Oracle使用序列)
    • 分页的SQL语句也不同(MySQL使用limit,Oracle使用ROWNUM)
  • 性能优化需要自己处理,没有提供数据缓存,需要自己实现
  • 面向SQL语句操作,不是面向对象

JPA的优缺点

本质:处理Java对象和关系型数据库表之前的转换,只是针对JDBC做了一次封装
优点:

  • 操作简单,代码简单entityManager.persist(ENTITY);
  • 直接面向持久对象操作
  • 提供世界级数据缓存 - 一级缓存、二级缓存、查询缓存
  • 数据库一致性很强,很少的修改
    • 把各个数据库抽取了一个方言接口
    • 不同数据库实现一个方言接口,如果切换数据库,必须修改方言实现和数据库驱动,链接数据库 缺点:
  • 不能干预SQL语句的生成
  • 项目中,对SQL语句的优化要求比较高,不适合使用JPA(可以使用JPA对原生SQL支持解决)
  • 如果一张表中有上亿级别的数据量,也不适合使用JPA,也不适合使用JPDBC(数据库读写分离、分库分表方案解决)
    • 分库分表 - 时间曲度切分

JPA适用项目规模

JPA一般用于中小型项目,如果是超大型项目,不建议使用JPA(性能影响)-> 需要自己去完成性能上的优化,有的优化,JPA做不到,一般会使用MyBatis
PS:JDBC和MyBatis比较容易,JPA或者Hibernate比较困难,因为JPA完全使用面向对象方式开发。

ORM框架

持久 - persistence
就是把数据保存到可掉电存储设备中
持久层就是DAO层,也称作数据访问层

ORM是对象关系映射框架

Object Relational Mapping对象关系映射
ORM就是通过将Java对象映射到数据库表,通过操作Java对象,就可以完成对数据库表的操作

面向对象概念 面向关系概念
对象实体 表的行(记录)
对象属性 表的列(字段)

JPA的历史

JDBC高手

自己实现缓存,可以使用Map的key-value,设置数据内容超过多少,抛弃之前;其次,使用

Hibernte高手

Hibernate用的好的话效率很高

JPA2.1

JPA2.1对应的是Hibernate 4的版本

持久层框架全球占有率

视频的图没有税负率,中国是Hibernate和MyBatis最高

转载于:https://my.oschina.net/hava/blog/1525445

JPA入门到精通 - JPA入门相关推荐

  1. python3入门到精通pdf-Python3入门到精通实战特训

    原标题:Python3入门到精通实战特训 随着时间的推移,python2.7版本很快就要停止官方更新了.如果你还没来及正式考虑版本迁移问题,或者你是一个python新手.那么就很有必要一试本课程,一方 ...

  2. seo从入门到精通_SEO入门到精通(七):SEO工作的流程是什么?

    刚入门seo会对这个行业的工作流程产生疑问,或者因为自己学习的seo知识比较零散,无法去把控seo工作的整体流程,本文会给大家讲解下企业站通用的seo优化流程: 行业概况分析→企业实况分析→竞品分析→ ...

  3. java从入门到精通_Java入门到精通、学习路线、就业方向、薪资及前景分析(上篇)...

    今天就大家最关心的Java热门问题进行简要分析,希望能对想要学习或是正在学习Java的小伙伴能够有所帮助~(大家多多关注呦~) 一.首先我们要了解Java是什么? 好学吗? Java是一种广泛使用的计 ...

  4. Mybatis从入门到精通二(入门详解)

    Mybatis从入门到精通二(想学Mybatis,看了这一篇你就不需要其他的了) 本课程分为两天第一天的请参考: https://blog.csdn.net/weixin_43564627/artic ...

  5. MyBatis入门到精通——Mybatis入门篇

    目录 一.什么是 MyBatis? 二.入门案例 (1)创建maven项目 (2)引入依赖包 (3)创建数据库执行sql脚本 三.入门程序源码 (1)User.java (2)UserMapper.j ...

  6. python编程第5版_正版 Python学习手册(原书第5版) python编程从入门到精通 python入门 计算机网络...

    上册 前言1 部分使用入门 章问答环节21 人们为何使用Python21 软件质量22 开发者效率23 Python是一门"脚本语言"吗23 好吧,Python的缺点是什么25 如 ...

  7. java线程入门到精通_JAVA入门到精通6.1-Java线程的概念

    和其他多数计算机语言不同,Java内置支持多线程编程(multithreaded programming). 多线程程序包含两条或两条以上并发运行的部分.程序中每个这样的部分都叫一个线程(thread ...

  8. 微服务从入门到精通【入门篇一】

    前言 博主是一名97年的程序员,在职场上摸爬滚打了一年.从毕业至今,生活可以说是五味杂陈.这篇文章是我的第一篇文章,后面会持续更新,希望看完这篇文章的读者能有自己的感悟和收获.本篇文章主要带大家熟悉微 ...

  9. MATLAB从入门到精通:MATLAB识别 自带手写数字集的CNN(LeNet5)

    一.前言 以下是博主整理的精品专栏,喜欢的小伙伴可自行订阅 R语言实战应用精讲50篇  R语言函数解析及案例实战应用 MATLAB-30天带你从入门到精通 MATLAB入门知识,函数原理解析及案例解析 ...

最新文章

  1. 别在 Java 代码里乱打日志了,这才是正确的打日志姿势!
  2. tensorflow2.2.0安装_Zabbix5.0安装部署
  3. Python,Pandas,Bokeh Cheat Sheet-Data Science
  4. 多线程编程之线程同步主要函数一览
  5. 江计算机科学与技术,计算机科学与技术
  6. 2021 第三封拒信 来自牛津大学自主智能机器和系统 Autonomous Intelligent Machines and Systems
  7. Java双向链表快速排序_双向链表的插入,删除,以及链表的快速排序
  8. 【推荐系统】基于MovieLens数据集实现的协同过滤算法
  9. 洛谷 P3732 [HAOI2017]供给侧改革【trie树】
  10. 为什么android手机内存不够,安卓手机老是内存不足怎么解决
  11. 判断当前环境在微信下,还是企业微信下
  12. SpringMvc源码入门
  13. libx264.c:function X264_init: error: undefined reference to x264_encoder_open_142
  14. Mac安装MySQL8碰到的问题
  15. Linux系统安装DB2数据库详解
  16. oracle sql练习_最方便的在线SQL学习环境——Oracle Live SQL
  17. 北京黑马程序员javaEE第19期课程
  18. PYTHON-音视频合并方法
  19. c语言台阶,关于C语言跳台阶问题的解决方法
  20. C#行转列绑定DGV

热门文章

  1. Go 语言:The Laws of Reflection 中文版
  2. 分布式查询的使用准则
  3. Linux文件压缩与归档
  4. 在Nginx和Apache服务器配置https
  5. Visual Studio 2010生成SQL Server测试数据
  6. 开心网外挂开发之 XML序列化于反序列化
  7. AWS — AWS 上的 5G 网络切片
  8. AWS — AWS VPC 虚拟专用云
  9. 计算机组成原理 — IPMI/BMC
  10. Oracle 用户概念与基本操作