01-第一天 springData_day01_第1页
01-第一天 springData_day01_第2页
01-第一天 springData_day01_第3页
01-第一天 springData_day01_第4页
01-第一天 springData_day01_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SpringData day010.1学习目标n 理解ORM思想与概述n 理解JPA与hibernate的关系n 掌握Maven构建 jpa项目并进行增删改查操作n 掌握JPQL语句进行条件查询0.2学习指南n ORM概述n Hibernate与JPA的概述n JPA入门案例增删改查n JPA api介绍n JPQL语句条件查询第一堂课本节知识点 课程安排与今日内容介绍回顾jdbc操作完成保存用户orm思想的引入orm思想的概述hibernate介绍和jpa引入本节目标理解JDBC编码问题理解orm思想了解hibernate框架1.1 课程安排与今日内容介绍1.1.1知识概述springData三天教学介绍概括第一天的知识内容1.1.2视频详情 1.1.3总结与补充简单:中等:复杂:1.1.4课堂提问与练习无1.1.5习题答案无1.2 回顾jdbc操作完成保存用户1.2.1知识概述分析使用 Jdbc编码问题:1.2.2视频详情 1.2.3总结与补充简单:中等:复杂:1.2.4课堂提问与练习jdbc编码问题有哪些?1.2.5习题答案1.操作繁琐2.占位符赋值麻烦1.3 orm思想的引入1.3.1 知识概述通过jdbc编码问题,引出 orm 映射思想1.3.2 视频详情 1.3.3 总结与补充简单:中等:复杂:1.3.4 课堂提问与练习无1.3.5 习题答案无1.4 orm思想的概述1.4.1 知识概述orm思想主要目的:操作实体类就相当于操作数据库表建立两个映射关系:实体类和表的映射关系实体类中属性和表中字段的映射关系不再重点关注:sql语句实现了ORM思想的框架:mybatis,hibernate1.4.2 视频详情1.4.3 总结与补充简单:中等:复杂:1.4.4 课堂提问与练习 无1.4.5 习题答案无1.5 hibernate介绍和jpa引入1.5.1 知识概述hibernate框架介绍Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架1.5.2 视频详情1.5.3 总结与补充简单:中等:Mybatis是ORM半自动映射框架,面向sql开发Hibernates是ORM全自动映射框架,面向对象开发复杂:1.5.4课堂提问与练习 无1.5.5习题答案无第二堂课本节知识点 jpa介绍jpa的优势案例说明入门案例:创建maven工程导入坐标入门案例:创建jpa的核心配置文件入门案例:配置jpa的核心配置文件本节目标理解jpa规范理解jpa与hibernaete关系完成jpaMaven工程搭建完成jpa核心配置文件编写2.1 Jpa介绍2.1.1知识概述通过之前学的的jdbc规范 引导学生理解 jpa规范2.1.2视频详情2.1.3总结与补充简单:中等:复杂:2.1.4课堂提问与练习无2.1.5习题答案无2.2 Jpa优势2.2.1知识概述JPA概述JPA的全称是Java Persistence API, 即Java 持久化API,是SUN公司推出的一套基于ORM的规范,内部是由一系列的接口和抽象类构成。JPA通过JDK 5.0注解描述对象关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA的优势1. 标准化 JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。2. 容器级特性的支持 JPA框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。3. 简单方便 JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java 类一样简单,没有任何的约束和限制,只需要使用 javax.persistence.Entity进行注释,JPA的框架和接口也都非常简单,没有太多特别的规则和设计模式的要求,开发者可以很容易的掌握。JPA基于非侵入式原则设计,因此可以很容易的和其它框架或者容器集成4. 查询能力 JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。JPA定义了独特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。5. 高级特性 JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。JPA与hibernate的关系JPA规范本质上就是一种ORM规范,注意不是ORM框架因为JPA并未提供ORM实现,它只是制订了一些规范,提供了一些编程的API接口,但具体实现则由服务厂商来提供实现。JPA和Hibernate的关系就像JDBC和JDBC驱动的关系,JPA是规范,Hibernate除了作为ORM框架之外,它也是一种JPA实现。JPA怎么取代Hibernate呢?JDBC规范可以驱动底层数据库吗?答案是否定的,也就是说,如果使用JPA规范进行数据库操作,底层需要hibernate作为其实现类完成数据持久化工作。2.2.2视频详情2.2.3总结与补充简单:中等:复杂:2.2.4课堂提问与练习Jpa优势有哪些?2.2.5习题答案1.标准化2.容器级特性的支持3. 简单方便4. 查询能力5. 高级特性2.3 案例说明2.3.1知识概述通过第一个项目的学习,一切功能都是基于客户需求,体现需求分析的重要性案例:是客户的相关操作(增删改查)客户:就是一家公司客户表:cst_customer2.3.2视频详情 2.3.3总结与补充简单:中等:复杂:2.3.4课堂提问与练习无2.3.5习题答案无2.4 入门案例:创建maven工程导入坐标2.4.1知识概述搭建环境的过程1.创建maven工程导入坐标2.需要配置jpa的核心配置文件*位置:配置到类路径下的一个叫做 META-INF 的文件夹下*命名:persistence.xml3.编写客户的实体类4.配置实体类和表,类中属性和表中字段的映射关系5.保存客户到数据库中2.4.2视频详情 2.4.3总结与补充简单:中等:复杂:2.4.4课堂提问与练习无2.4.5习题答案无2.5 入门案例:创建jpa的核心配置文件2.5.1知识概述在java工程的resource路径下创建一个名为META-INF的文件夹,在此文件夹下创建一个名为persistence.xml的配置文件注意:必须在此文件夹下2.5.2视频详情 2.4.3总结与补充简单:中等:复杂:2.4.4课堂提问与练习无2.4.5习题答案无2.6 入门案例:配置jpa的核心配置文件2.6.1知识概述persistence.xml的配置文件配置jpa实现框架连接数据库驱动Console控制台显示sql语句格式化sql语句ORM映射自动创建表create、update、noneorg.hibernate.jpa.HibernatePersistenceProvider2.6.2视频详情 2.6.3总结与补充简单:中等:复杂:2.6.4课堂提问与练习无2.6.5习题答案无第三堂课本节知识点 入门案例:编写客户的实体类入门案例:使用jpa注解配置映射关系入门案例:jpa的操作步骤说明入门案例:完成客户保存入门案例:验证客户保存和自动生成数据库表的说明本节目标完成客户的实体类与jpa注解配置映射关系完成品牌列表分页查询后台代码掌握jpa操作步骤完成客户保存233.1 入门案例:编写客户的实体类3.1.1知识概述客户实体类的编写:3.1.2视频详情3.1.3总结与补充简单:推荐使用基本数据类型包装类客户端没有传参时,是null 而不是0中等:复杂:3.1.4课堂提问与练习无3.1.5习题答案无3.2 入门案例:使用jpa注解配置映射关系3.2.1知识概述在实体类上使用JPA注解的形式配置映射关系Entity Table 在类上Id generatedValue Column 在方法上3.2.2视频详情 3.2.3总结与补充简单:考虑到 项目可跨数据与迁移,推荐使用 GenerationType.AUTO : 由程序自动的帮助我们选择主键生成策略中等:复杂:3.2.4课堂提问与练习无3.2.5习题答案无3.3 入门案例:jpa的操作步骤说明品牌分页-需求分析3.3.1知识概述 测试jpa的保存 案例:保存一个客户到数据库中 Jpa的操作步骤 1.加载配置文件创建工厂(实体管理器工厂)对象 2.通过实体管理器工厂获取实体管理器 3.获取事务对象,开启事务 4.完成增删改查操作 5.提交事务(回滚事务) 6.释放资源3.3.2视频详情 3.3.3总结与补充简单:工厂对象单例(线程安全)实体管理器对象多例(线程不安全)中等:复杂:3.3.4课堂提问与练习无3.3.5习题答案无3.4 入门案例:完成客户保存3.4.1知识概述Jpa保存客户3.4.2视频详情 3.4.3总结与补充简单:中等:复杂:3.4.4课堂提问与练习无3.4.5习题答案无3.5 入门案例:验证客户保存和自动生成数据库表的说明3.5.1知识概述代码执行 create 代码执行 update代码执行 none3.5.2视频详情 3.5.3总结与补充简单:中等:复杂:3.5.4课堂提问与练习hibernate.hbm2ddl.auto有几种设置,分别有什么作用?3.5.5习题答案create : 程序运行时创建数据库表(如果有表,先删除表再创建) update :程序运行时创建表(如果有表,不会创建表) none :不会创建表第四堂课本节知识点 主键生成策略的说明主键生成策略的演示api对象讲解抽取jpaUtils工具类验证工具类本节目标掌握entity主键生成策略掌握jpa基本方法的使用掌握jpaUtils工具类的抽取44.1 主键生成策略的说明4.1.1知识概述GeneratedValue:配置主键的生成策略 strategy GenerationType.IDENTITY :自增,mysql * 底层数据库必须支持自动增长(底层数据库支持的自动增长方式,对id自增) GenerationType.SEQUENCE : 序列,oracle * 底层数据库必须支持序列 GenerationType.TABLE : jpa提供的一种机制,通过一张数据库表的形式帮助我们完成主键自增 GenerationType.AUTO : 由程序自动的帮助我们选择主键生成策略4.1.2视频详情4.1.3总结与补充简单:中等:复杂:4.1.4课堂提问与练习无4.1.5习题答案无4.2 主键生成策略的演示4.2.1知识概述底层数据库必须支持自动增长(底层数据库支持的自动增长方式,对id自增)底层数据库必须支持序列jpa提供的一种机制,通过一张数据库表的形式帮助我们完成主键自增由程序自动的帮助我们选择主键生成策略4.2.2视频详情 4.2.3总结与补充简单:中等:复杂:4.2.4课堂提问与练习无4.2.5习题答案无4.3 api对象讲解4.3.1知识概述jpa操作的操作步骤1.加载配置文件创建实体管理器工厂Persisitence:静态方法(根据持久化单元名称创建实体管理器工厂)createEntityMnagerFactory(持久化单元名称)作用:创建实体管理器工厂2.根据实体管理器工厂,创建实体管理器EntityManagerFactory :获取EntityManager对象方法:createEntityManager* 内部维护的很多的内容内部维护了数据库信息,维护了缓存信息维护了所有的实体管理器对象再创建EntityManagerFactory的过程中会根据配置创建数据库表* EntityManagerFactory的创建过程比较浪费资源特点:线程安全的对象多个线程访问同一个EntityManagerFactory不会有线程安全问题* 如何解决EntityManagerFactory的创建过程浪费资源(耗时)的问题?思路:创建一个公共的EntityManagerFactory的对象* 静态代码块的形式创建EntityManagerFactory3.创建事务对象,开启事务EntityManager对象:实体类管理器beginTransaction : 创建事务对象presist : 保存merge : 更新remove : 删除find/getRefrence : 根据id查询Transaction 对象 : 事务begin:开启事务commit:提交事务rollback:回滚4.增删改查操作5.提交事务6.释放资源4.3.2视频详情 4.3.3总结与补充简单:中等:复杂:4.3.4课堂提问与练习无4.3.5习题答案无4.4 抽取jpaUtils工具类4.4.1知识概述工具类编写4.4.2视频详情 4.4.3总结与补充简单:中等:复杂:4.4.4课堂提问与练习无4.4.5习题答案无4.5验证工具类4.5.1知识概述测试代码改造为:4.5.2视频详情 4.5.3总结与补充简单:中等:复杂:4.5.4课堂提问与练习无4.5.5习题答案无第五堂课本节知识点 find方法:根据id查询客户延迟加载与立即加载根据id删除客户客户的更新操作jpql的介绍本节目标完成客户查询功能完成客户更新与删除功能35.1 find方法:根据id查询客户5.1.1知识概述查询客户jpa开发步骤代码实现注意find方法传递二个参数5.1.2视频详情5.1.3总结与补充简单:中等:复杂:5.1.4课堂提问与练习无5.1.5习题答案无5.2 延迟加载与立即加载5.2.1知识概述根据id查询客户 使用find方法查询: 1.查询的对象就是当前客户对象本身 2.在调用find方法的时候,就会发送sql语句查询数据库立即加载getReference方法 1.获取的对象是一个动态代理对象 2.调用getReference方法不会立即发送sql语句查询数据库 * 当调用查询结果对象的时候,才会发送查询的sql语句:什么时候用,什么时候发送sql语句查询数据库延迟加载(懒加载) * 得到的是一个动态代理对象 * 什么时候用,什么使用才会查询5.2.2视频详情5.2.3总结与补充简单:中等:复杂:5.2.4课堂提问与练习无5.2.5习题答案无5.3 根据id删除客户5.3.1知识概述先使用find方法查询,再使用remove方法删除5.3.2视频详情5.3.3总结与补充简单:中等:复杂:5.3.4课堂提问与练习无5.3.5习题答案无5.4 客户的更新操作5.4.1知识概述先使用find方法查询,再使用merge方法删除5.4.2视频详情5.4.3总结与补充简单:中等:复杂:5.4.4课堂提问与练习无5.4.5习题答案无5.5 jpql的介绍5.5.1知识概述jpql查询sql:查询的是表和表中的字段jpql:查询的是实体类和类中的属性* jpql和sql语句的语法相似下面将使用 jpql进行条件查询1.查询全部2.分页查询3.统计查询4.条件查询5.排序5.5.2视频详情5.5.3总结与补充简单:理解jpql语句是面向对象与sql并不同中等:复杂:5.5.4课堂提问与练习无5.5.5习题答案无第六堂课本节知识点 jpql查询:查询全部jpql查询:倒序jpql查询:统计查询jpql查询:分页查询jpql查询:条件查询本节目标完成品牌删除操作完成品牌条件查询6.1 jpql查询:查询全部6.1.1 知识概述查询全部 jqpl:from cn.itcast.domain.Customer sql:SELECT * FROM cst_customer具体执行的方法注意 先创建query对象,再执行getResultList返回结果集6.1.2 视频详情6.1.3 总结与补充简单:中等:复杂:6.1.4 课堂提问与练习无6.1.5 习题答案无6.2 jpql查询:倒序6.2.1 知识概述排序查询: 倒序查询全部客户(根据id倒序) sql:SELECT * FROM cst_customer ORDER BY cust_id DESC jpql:from Customer order by custId desc6.2.2 视频详情6.2.3 总结与补充简单:中等:复杂:6.2.4 课堂提问与练习

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论