




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、经典Java EE课程段鹏松第10章 Java耐久化APIJPA了解ORM的根本概念了解实体的根本概念掌握实体的根本映射掌握实体的关联关系映射掌握实体的生命周期规律课程目的概述J2EE时代,运用Entity Bean规范来处理运用程序的耐久化问题;Java EE5规范运用JPA作为耐久化处理方案;Sun公司的JPA以Entity为中心,它将实体映射究竟层数据表,然后经过在运用程序中运用EntityManager来操作Entity,而JPA实现那么会将这种操作转换为对底层数据表的操作。JPA只是一种规范,其本身并不提供实现,开发者需指定JPA的实现。目 录实体引见实体入门了解实体实体的根本映射关
2、联关系映射承继关系映射运用笼统实体和非实体父类实体的生命周期和监听器ORM的概念ORM:Object /Relation Mapping,对象关系映射。ORM的根本思想:完成面向对象的编程言语到关系数据库的映射普通是双向的。ORM出现的缘由:处理面向对象编程言语和关系型数据库操作时的不匹配问题。ORM的未来:随着面向对象数据库的出现,ORM工具会自动消亡,但短期内不会。ORM的概念JPA概述JPA实现作用:把对实体的操作,转换成对数据库的操作。JPA规范本质上就是一种ORM规范。但JPA并未提供ORM实现,它只是指定了一些规范,提供了一些编程的API,详细实现由运用效力器厂商来提供。JPA概述
3、数据库HibernateTopLink其他ORM框架.运用程序JPA规范JPA实现JPA的映射规那么数据表映射实体类把表构造映射为实体类类型数据表的行映射实体类对象把数据表的行记录映射到实体对象数据表的列映射实体的属性字段映射为实体类的属性JPA规范简介JPA并不属于EJB3的范畴,它是一套完全独立的规范。JPA不仅可以在Java EE中运用,也可以在Java SE中运用。JPA的常用组件:实体EntityManager类似Hibernate中的sessionJPQL类似HQL目 录实体引见实体入门了解实体实体的根本映射关联关系映射承继关系映射运用笼统实体和非实体父类实体的生命周期和监听器开发
4、实体JPA管理的实体类就是一个POJO类,再在实体类上添加一些Annotation。Annotation定义了POJO类和底层数据表之间的映射关系。+=POJOannotationEntityJPA的实现目前主流的JPA实现有如下几种:Hibernate JPA实现TopLink JPA实现OpenJPA实现不同的JPA实现主要经过persistence.xml文件的配置信息来区分在Java SE环境下运用Hibernate JPA实现为了在Java SE运用程序中运用Hibernate JPA实现,必需先下载和安装Hibernate JPA实现。实践操作演示在Java SE环境下运用TopL
5、ink JPA实现Java EE5、GlassFish运用效力器都曾经内置了TopLink JPA实现。实践操作演示在Java SE环境下运用EntityManager运用EntityManager的情形:在EJB中运用EntityManager在Servlet、JSF的托管Bean中运用EntityManager在Java SE运用中运用EntityManager在Java SE环境下运用EntityManager创建EntityManager的步骤:运用javax.persistence.Persistence工厂类提供的静态方法createEntityManagerFactory()运用
6、EntityManagerFactory的createEntityManager()或createEntityManager(Map map)实践操作演示运转结果Hibernate和JPA的关系JPA是一个规范,Hibernate是对JPA规范的一种实现;JPA也可以用其他的实现,如TopLink等Hibernate也有本人的实现类。JPA出现缘由简化现有Java EE和Java SE运用的对象耐久化的开发任务Sun希望整合对ORM技术,实现耐久化领域的一致EntityManager的方法persist():保管实体到数据库merger():合并实体remove():删除实体find(.):查
7、找实体flush():同步数据库refresh():刷新实体others. JAP的配置方式JPA的配置方式anntotationxml引荐运用annotation实践操作演示目 录实体引见实体入门了解实体实体的根本映射关联关系映射承继关系映射运用笼统实体和非实体父类实体的生命周期和监听器耐久化上下文和耐久化单元耐久化上下文是一组处于托管形状下实体所组成的集合,它处于EntityManager的管理之下。运用程序可以经过EntityManager与耐久化上下文交互。耐久化单元由persistence.xml文件定义,运用标签定义。不论任何类型的运用程序(Java SE、EJB、WAR等),pe
8、risistence.xml文件都应该放在META-INF文件夹下面。实体类的要求提供一个无参数的构造器提供一个标识属性为实体类的每个属性提供setter和getter方法运用非final的类重写equals()和hashCode()方法实体的形状新建(new)在new操作之后托管(managed)被EntityManager所管理,和数据库操作同步脱管(detached)与之管理的EntityManager封锁,断开和数据库的衔接被删除(removed)调用EntityManager的remove()方法之后实体的形状新建托管脱管被删除终了开场new渣滓回收remove()渣滓回收persi
9、st()close()clear()find()getReference()管理实体的方法耐久化实体运用persist()方法根据逐渐加载实体运用find()方法更新实体运用实体类的setXXX()方法在提交事务之前实践操作演示管理实体的方法合并实体运用merge()方法删除实体运用remove()方法刷新实体运用refresh()方法实践操作演示目 录实体引见实体入门了解实体实体的根本映射关联关系映射承继关系映射运用笼统实体和非实体父类实体的生命周期和监听器映射实体类对于各JPA实体类而言,通常可以采用如下两个annotation来修饰它EntityTablecatalognameschem
10、auniqueConstraint映射实体类的属性Column:映射属性到数据库,其支持的属性有:inertbalelengthnamenullabletableuniqueupdatableTransient:该属性不会映射到数据库实践操作演示映射实体类的属性Enumerated:映射枚举类型的属性EnumTypeSTRING:值ORDINAL:编号Lob:修饰大数据类型Basic:可以指定延迟加载fetchoptional实践操作演示映射实体类的属性Temporal:修饰日期类型的属性TemporalTypeDATETIMETIMESTAMP实践操作演示将实体映射到多个表假设一个实体的属性
11、较多,可以把这个实体映射到多个数据库表中。TableSecondaryTableSecondaryTables实践操作演示映射复合类型的属性Embedded:映射复合类型属性Embeddable:修饰作为复合类型的自定义类实践操作演示映射实体类的主键数据库的主键普通设置为自增长的,可以是数字类型,也可以是字符类型,或者是复合类型。JPA中的单一主键运用Id修饰。Id的属性有:strategygeneratorJPA的复合主键运用IdClass和多个Id等来修饰。实践操作演示目 录实体引见实体入门了解实体实体的根本映射关联关系映射承继关系映射运用笼统实体和非实体父类实体的生命周期和监听器关联关系
12、概述关联关系的概念:实例之间的相互关联关联关系的分类单向关联单向1-1,单向1-N,单向N-1,单向N-N双向关联双向1-1,双向1-N,双向N-N单向N-1关联只能从N的一端访问1的一端经过在N的一端援用1的一端来实现需求在N的一端定义1的一端的setter和getter运用的annotation:ManyToOnecascade,fetch,optional,targetEntityJoinColumncolumnDefinition,name等实践操作演示单向1-1关联只能从1的一端访问另一端的1经过在1的一端援用1的一端来实现需求在1的一端定义1的另一端的setter和getter运用
13、的annotation:OneToOnecascade,fetch,mappedBy,optional,targetEntityJoinColumncolumnDefinition,name等实践操作演示单向1-N关联只能从1的一端访问N的一端经过在1的一端援用N端来实现需求在1的一端定义N端的setter和getterN端在1端以通常以Set类型出现运用的annotation:OneToManycascade,fetch,mappedBy,optional,targetEntityJoinColumncolumnDefinition,name等实践操作演示单向N-N关联只能从N的一端访问另一
14、端的N需求在N的一端定义N的另一端的setter和getter控制端需求添加一个Set集合属性,该Set集合记录了当前实体的一切关联实体运用的annotation:ManyToManycascade,fetch,mappedBy,targetEntityJoinTablename,catalog,schema等实践操作演示双向1-1关联可以从恣意端访问对端需求让两端都添加对方的援用需求让两端都定义对端的setter和getter底层数据库可以在恣意一端添加外键运用的annotation:OneToOnecascade,fetch,targetEntityJoinColumnname,nulla
15、ble,schema等实践操作演示双向1-N关联可以从恣意端访问对端需求让两端都添加对方的援用需求让两端都定义对端的setter和getter实践工程中尽量运用双向1-N运用的annotation:OneToMany(1端)ManyToOne(N端)JoinColumn(N端)实践操作演示双向N-N关联可以从恣意端访问对端需求让两端都添加对方的援用需求让两端都定义对端的setter和getter实践工程中尽量防止运用双向N-N运用的annotation:ManyToManycascade,fetch,targetEntityJoinTablename,nullable,schema等实践操作演
16、示运用Map集合记录关联实体JPA允许运用Map集合来记录关联实体。当运用Map集合来记录关联实体时,Map集合的Key类型通常是 关联实体的主键类型。运用的annotation:OneToManyMapKey实践操作演示对关联实体进展排序运用的annotation:OrderBy指定排序规那么例如:OrderBy(“属性名 ASC)通常和OneToMany,ManytoMany结合运用实践操作演示目 录实体引见实体入门了解实体实体的根本映射关联关系映射承继关系映射运用笼统实体和非实体父类实体的生命周期和监听器概述对于面向对象的编程言语而言,承继和多态是两个最根本的概念。JPA支持多种承继映射
17、战略,不论哪种承继映射战略,JPA的多态查询都可以运转良好。对于类与类之间的承继关系,JPA提供了3中映射战略:整个类层次对应一张表衔接子类的映射战略每个详细类对应一张表JPA映射战略概述运用的Annotation:Inheritance不同的战略JOINED:承继的子类各自生成一张表SINGLE_TABLE:只生成一张表,用一个字段当鉴别器默许TABLE_PER_CLASS:每个类都消费一张表,包括基类整个类层次对应一张表的映射战略是JPA承继映射默许的映射战略。这种映射战略下,一切的实体都映射到一张表中,经过区分者(discriminator)列来区分不同的实体。运用的Annotation
18、:DiscriminatorColumnDiscriminatorValue会呵斥数据冗余,实践中尽量防止。实践操作演示DiscriminatorColumn引见DiscriminatorColumn定义在运用SINGLE_TABLE或JOINED承继战略的表中区别不承继层次的列。 name:column的名字。默许值为TYPE。 columnDefinition:生成DDL的sql片断。 length:String类型的column的长度,其他类型运用默许值10。下面的代码定义了一个列名为DISC,长度为20的String类型的区别列。 Entity Table(name=CUST) Inh
19、eritance(strategy=SINGLE_TABLE,discriminatorType=STRING, scriminatorValue=CUSTOMER) DiscriminatorColumn(name=DISC,length=20) publicclassCustomer.衔接子表的映射战略子类实体由父类表和子类表共同存储,将子类和父类共有的属性在父类表中存储,而子类添加的属性那么保管在子类表中。会有共有主键存在。运用的Annotation:Inheritance必需指定strategy属性实践操作演示每个详细类对应一张表的映射战略父类的属性保管在父类表中,子类的属性保管在子类
20、表中。但从数据库方面,难以看出承继关系。不能运用主键自增战略运用的Annotation:Inheritance必需指定strategy属性实践操作演示目 录实体引见实体入门了解实体实体的根本映射关联关系映射承继关系映射运用笼统实体和非实体父类实体的生命周期和监听器概述除了常规实体之间的承继关系外,JPA还有一些特殊用法:JPA的实体不仅可以是详细类,也可以是笼统类;JPA的实体可以承继非实体,这个父类被称为非实体父类。本节将详细引见这两种特殊用法。笼统实体运用Entity修饰笼统类,该笼统类就称为笼统实体;笼统实体和详细实体的独一区别:笼统实体的实现类是笼统类,因此程序无法直接创建笼统实体的实
21、例。对笼统实体的查询操作,会转换为该笼统实体子类的相应查询操作,是一种典型的多态操作。实践操作演示非实体父类JPA实体的父类既可以是实体,也可以是非实体。非实体父类既可以是详细类,也可以是笼统类。运用MappedSuperclass修饰非实体父类。实践操作演示非实体父类的特点非实体父类在底层数据库中并没有对应的数据表。非实体父类不能运用EntityManager执行保管、更新和查询。非实体父类不能运用Query执行查询。笼统实体和非实体父类的区别:笼统实领会生成数据库表,非实体父类不会重定义非实体子类的外键列对于非实体父类,假设和其他实体之间存在关联关系,那它的一切子类都能够需求添加额外的外键列,这样才干记录它的一切子类实体和关联实体之间的关联关系。默许情况下,外键列的称号都是一样的,假想象修正可以运用以下annotation:AssociationOverrideAssociationOverrides实践操作演示目 录实体引见实体入门了解实体实体的根本映射关联关系映射承继关系映射运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年 高级焊工职业技能考试练习题附答案
- 2025-2031年中国玻璃移门行业市场发展监测及投资策略研究报告
- 2025年AOI检测设备市场调研报告
- 2025年中国全套管钻机行业市场深度分析及投资策略研究报告
- 2025年中国专网无线通信市场前景预测及投资规划研究报告
- 中国商用汽车行业未来趋势预测分析及投资规划研究建议报告
- 中国通信网络时钟同步设备行业市场深度分析及发展潜力预测报告
- 亚胺薄膜复合-NHN项目投资可行性研究分析报告(2024-2030版)
- 职业卫生检测与评价报告书编制规则
- 2025年中国噪声监测仪器表行业市场深度分析及投资战略研究报告
- 2025年湖北省高考政治试卷真题(含答案)
- 老龄化社会的数字包容-洞察及研究
- 广东省深圳市宝安区2023-2024学年二年级下册期末测试数学试卷(含答案)
- 2025江苏扬州宝应县“乡村振兴青年人才”招聘67人笔试备考试题及参考答案详解
- 2025年宁夏银川灵武市选聘市属国有企业管理人员招聘笔试冲刺题(带答案解析)
- 三大监测培训试题及答案
- 两办意见宣贯考试题及答案
- 2025年汽车驾照考试科目一考试题库及参考答案
- 超市商场保密协议书
- 社工社会考试试题及答案
- 跨文化交际知识体系及其前沿动态
评论
0/150
提交评论