刘宝宝讲解开始了。。。。。

第一讲 JPA介绍

JPA

1.JPA的概念:
    Java Persistence API:用于对象持久化的 API
    Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层

2.JPA和hibernate的关系
    从功能上来说, JPA 是 Hibernate 功能的一个子集

3.JPA的优势:
    标准化:  提供相同的 API,这保证了基于JPA 开发的企业应用能够经过少量的修改就能够在不同的 JPA 框架下运行。
    简单易用,集成方便:  JPA 的主要目标之一就是提供更加简单的编程模型,在 JPA 框架下创建实体和创建 Java  类一样简单,只需要使用 javax.persistence.Entity 进行注释;JPA 的框架和接口也都非常简单,
    可媲美JDBC的查询能力:  JPA的查询语言是面向对象的,JPA定义了独特的JPQL,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。
    支持面向对象的高级特性: JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,最大限度的使用面向对象的模型
    
4.JPA 包括 3方面的技术
    ORM  映射元数据:JPA 支持 XML 和  JDK 5.0 注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。  
    JPA 的 API:用来操作实体对象,执行CRUD操作,框架在后台完成所有的事情,开发者从繁琐的 JDBC和 SQL代码中解脱出来。  
    查询语言(JPQL):这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序和具体的  SQL 紧密耦合。

1.persistence.xml 文件是固定的
2.当spring和hibernate整合的时候,这个persistence.xml就可以不要了,也可以放着

3.persistence.xml
    <persistence-unit name="jpa-1" transaction-type="RESOURCE_LOCAL">
        
        <!--
        配置什么ORM产品 来作为  JPA的实现
        1.实际上配置的是 javax.persistence.spi.PersistenceProvider这个接口的实现类
        2.当JPA中只有一个JPA项目,可以选择配置该节点,也可以选择不配置该节点
         -->
        <!-- provider:提供者 -->
        <!-- 打开OpenType的快捷键Ctrl+Shift+t ,找到HibernatePersistence.class -->
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        
        <!-- 添加持久化类 -->
        <class>com.baidu.jpa.helloworld.Customer</class>
        
        <properties>
            <!-- 连接数据库的基本信息-->
            <property name="javax.persistence.jdbc.driver" value="com.MySQL.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="root"/>
            <!-- 配置JPA 实现产品的基本属性/配置hibernate的基本属性 -->
            
            <!-- 格式化sql -->
            <property name="hibernate.format_sql" value="true"/>
            <!-- 在控制台自动显示sql -->
            <property name="hibernate.show_sql" value="true"/>
            <!-- 生成数据表格策略 -->
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>

第二讲 JPA工程创建步骤

1.创建数据库名
2.创建一个jpa project  选择2.0
3.创建一个lib文件  add Build Path
    antlr-2.7.7.jar
    dom4j-1.6.1.jar
    ehcache-core-2.4.3.jar
    hibernate-commons-annotations-4.0.2.Final.jar
    hibernate-core-4.2.4.Final.jar
    hibernate-ehcache-4.2.4.Final.jar
    hibernate-entitymanager-4.2.4.Final.jar
    hibernate-jpa-2.0-api-1.0.1.Final.jar
    javassist-3.15.0-GA.jar
    jboss-logging-3.1.0.GA.jar
    jboss-transaction-api_1.1_spec-1.0.1.Final.jar
    mysql-connector-java-5.1.7-bin.jar
    slf4j-api-1.6.1.jar
4. persistence.xml  
    
            <!-- 连接数据库的基本信息-->
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="root"/>

<!-- 配置JPA 实现产品的基本属性/配置hibernate的基本属性 -->
            
            <!-- 格式化sql -->
            <property name="hibernate.format_sql" value="true"/>
            <!-- 在控制台自动显示sql -->
            <property name="hibernate.show_sql" value="true"/>
            <!-- 生成数据表格策略 -->
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            
5.创建包名com.baidu.jpa
    
    创建持久化类 、实体类
    
    @Entity
    @Table(name="表名")
    
    @Id
    @@GeneratedValue(strategy=GenerationType.AUTO)
        
6.去配置文件,添加持久化类
    <!-- 添加持久化类 -->
        <class>com.baidu.jpa.helloworld.Customer</class>    
        
7.创建一个main方法类

//1.创建 EntitymanagerFactory
        //persistenceUnitName 持久化单元名字
        String persistenceUnitName = "jpa-1";
        EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnitName);
        
        //2.创建 EntityManager
        
        EntityManager em = emf.createEntityManager();
        
        //3.开启事务
        
        EntityTransaction et = em.getTransaction();
        et.begin();
        //4.进行持久化操作
        
        Customer c = new Customer();
        c.setAge(12);
        c.setEmail("123@qq.com");
        c.setLastName("张三");
        
        em.persist(c); //保存
        
        //5.提交事务
        
        et.commit();
        
        //6.关闭EntityManager
        
        em.close();
        
        //7.关闭EntityManagerFactory
        
        emf.close();

转载于:https://blog.51cto.com/11287844/1889293

JPA 深度刘宝宝剖析版相关推荐

  1. Hibernate框架刘宝宝深度版

    刘宝宝开始总结了: 第一章 Hibenate的基础篇 1.hibernate的概念: hibernate是一种采用ORM(对象映射关系)技术的持久层框结构                       ...

  2. 《动手学深度学习》PyTorch版GitHub资源

    之前,偶然间看到过这个PyTorch版<动手学深度学习>,当时留意了一下,后来,着手学习pytorch,发现找不到这个资源了.今天又看到了,赶紧保存下来. <动手学深度学习>P ...

  3. deepin系统引导_国产 Linux 发行版 深度操作系统 20 正式版发布

    来源:Linux Deepin 原文地址:https://www.deepin.org/zh/2020/09/11/deepin-20-innovation-is-ongoing/ 深度操作系统是一个 ...

  4. TensorFlow 深度学习中文第二版·翻译完成

    原文:Deep Learning with TensorFlow Second Edition 协议:CC BY-NC-SA 4.0 不要担心自己的形象,只关心如何实现目标.--<原则>, ...

  5. TensorFlow 深度学习中文第二版(初稿)

    TensorFlow 深度学习中文第二版 第 1 章深度学习入门 人工神经网络 ANN 如何学习? 神经网络架构 深度学习框架 总结 第 2 章 TensorFlow 的首次观察 TensorFlow ...

  6. 李沐d2l《动手学深度学习》第二版——风格迁移源码详解

    本文是对李沐Dive to DL<动手学深度学习>第二版13.12节风格迁移的源码详解,整体由Jupyter+VSCode完成,几乎所有重要代码均给出了注释,一看就懂.需要的同学可以在文末 ...

  7. win7 安装深度linux系统安装教程,深度技术win7旗舰版linux虚拟机安装教程

    有用户在问,想在win7系统的用户想在虚拟机中安装linux系统,却不知Win7怎么进行linux虚拟机安装呢?方法其实并不复杂,下面介绍深度技术win7旗舰版linux虚拟机安装教程. 1.想要在w ...

  8. 深度ghostxp_sp3至尊纯净版 v2013.08

    深度ghostxp_sp3至尊纯净版 v2013.08 * 更新了系统补丁到2013-08可通过微软漏洞扫描和卫士漏洞扫描) 软件安装器集成软件: * 增加数款驱动的支持 * 其它细节的优化和修正 深 ...

  9. 李沐《动手学深度学习》第二版比赛2-Classify Leaves

    李沐<动手学深度学习>第二版比赛2-Classify Leaves 我的偶像,李沐大神主讲的<动手学深度学习>(使用Pytorch框架,第一版使用的是MXNet框架)目前已经进 ...

最新文章

  1. R语言使用pROC包绘制ROC曲线实战:roc函数计算AUC值、plot.roc函数绘制ROC曲线、添加置信区间、为回归模型中的每个因子绘制ROC曲线并在同一个图中显示出来
  2. 海蜘蛛路由弹窗广告破解
  3. 【python】xsspider零碎知识点
  4. 在线五子棋JAVA网络编程_实验五 Java网络编程及安全
  5. 富文本编辑器:Typora(编辑与预览一体化)
  6. 基于PyQt的扫雷游戏实现_下篇
  7. 生产订单“生产线别”带入生产入库单
  8. JavaScript高级技巧
  9. 爱奇艺、芒果TV相继涨价,长视频开启新一轮“加价不加量”游戏?
  10. 树莓派4B使用移远EC20带GPS 4G模块ppp拨号上网
  11. ubuntu 18.04 e1000e网卡驱动安装
  12. fgo服务器维护抽卡,FGO国服最佳抽卡时间推荐,玄学或许能让你脱非入欧!
  13. 协成zookeeper
  14. rendered使用效果
  15. 安装Rstudio Desktop和Rstudio Server免费版本
  16. dos2unix 解决脚本执行过程中的莫名错误 “not found”
  17. [程序人生]--人生架构三个层次:智慧是大脑,选择是躯干,知识文化是血肉
  18. 支付宝企业账户单笔支付到个人账户
  19. myEclipse(MyEclipse)下VSS的安装和使用
  20. 省考面试90+经验贴倾情奉献

热门文章

  1. nios 双核 烧录_FPGA烧写NIOS ii程序至FLASH(epcs)中
  2. 图像融合算法java_图像融合 NSCT算法 matlab
  3. 多目标优化算法学习笔记
  4. RAD Studio 10.3.x RIO 常规快捷键操作
  5. matlab从fig图文件中提取数据
  6. android vector动画,AnimatedVectorDrawable实现可爱的图钉跳跃动画
  7. react ts hot update was not successful
  8. 神垕古镇景区5A级十年都没有实现的三大主因
  9. bytes强转为str后怎么还原为bytes
  10. 麻烦用python写一个建单的查询语句