《第2章对象关系映射.ppt》由会员分享,可在线阅读,更多相关《第2章对象关系映射.ppt(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Hibernate ORMHibernate ORM 最佳实践最佳实践第第2章章 对象关系映射对象关系映射Hibernate ORM回顾q介绍应用程序分层体系结构qORM技术背景(数据库操作、持久化、JDBC比较及ORM工具)qHibernate的环境配置及入门程序编写2Hibernate ORM目标q了解Hibernate的对象标识符q学习Hibernate的主键生成机制q掌握Hibernate的映射类型q掌握对象继承关系映射q掌握关联关系映射3Hibernate ORM对象标识符qHibernate使用OID(Object Identifier)来标识对象的唯一性,它是关系数据库中主键在J
2、ava对象模型中的等价物三个不同的OIDHibernate能够识别三个不同的primary KeyHibernate根据对象标识符来维持Java对象和数据库表中记录的对应关系问题数据库表中每条记录PK值不同的,但是在Java中靠对象的内存地址来识别的?4Hibernate ORM重写对象equals和hashCode方法Student s1=new Student(100,”TOM”,22);Student s2=new Student(100,“TOM”,22);Student s3=s1;System.out.println(s1=s2);System.out.println(s1=s3)
3、;falsetrue重写equals()与hashCode()方法,不仅比较对象的地址,同时比较对象的具体内容Hibernate区分对象实体,是与数据库记录一致的。5Hibernate ORMHibernate对主键分类q两种分类:单个主键、复合主键 自然(业务)主键、代理(逻辑)主键qHibernate内置对象标识符生成策略 6Hibernate ORM主键映射q单个主键映射q复合主键映射 把组成主键的属性组成一个类.7Hibernate ORM示例在映射表中:、8Hibernate ORMHibernate的映射类型qHibernate连接Java对象和数据库表,在映射表里,使用及其他属性
4、标签时,type属性既不是Java数据类型,也不是SQL数据类型,而是使用Hibernate的映射类型q映射类型分为:基本映射类型和自定义映射类型如果在映射文件中没有指定映射的数据类型,Hibernate通过反射机制查找属性所在类的类型。9Hibernate ORM继承关系映射qHibernate提供3种继承持久化策略:每个子类一张表 每个类一张表 共享一个数据表Studentsid:Longsname:StringUndergraduatetutor:StringGraduategtime:date10Hibernate ORM每个子类一个数据表q将父类属性分别加入到子类中去,分别对子类设计
5、映射文件,针对子类对象进行操作,不能使用多态进行ORM操作。UndergraduateGraduatesid:Longsname:Stringtutor:Stringsid:Long(PK)sname:Stringgtime:dateTable:undergraduateTable:graduate设计所映射表设计映射表:Undergraduate.hbm.xml、Graduate.hbm.xml类(PK)11Hibernate ORM每个类一个数据表q在父类映射表中利用标签定义其子类的映射StudentUndergraduateGraduatesid:Long(PK)sname:String
6、usid:Long(PK)tutor:Stringgsid:Long(PK)gtime:date12Hibernate ORM示例下面代码展示子类对象的持久化操作可由父类对象来完成!13Hibernate ORM代码14Hibernate ORM共享一个数据表q只定义一个父类表,在父表中包括子类属性对应的字段,同时增加一个区分子类类型的字段。在父类映射表中,定义标签来描述区分子类类型的字段,标签定义子类的映射。15Hibernate ORM示例下面代码展示子类对象的持久化操作可由父类对象来完成!16Hibernate ORM代码17Hibernate ORM18Hibernate ORM关联关
7、系映射q使一个类知道另一个类的存在,表现在数据库中,通常用一个外键字段关联到另一张表。关联关系是有方向的,可以是单向,或双向的。qHibernate提供下列检索策略:一对一关联 一对多、多对一关联 多对多关联 组件映射 19Hibernate ORM关系映射(一)q多对一关系/一对多关系 它们是相对的关系,在关系映射表中使用标签或来映射关系.班级-学生关系tunittid(PK)tnametstudentsid(PK)snameunit_id(FK)(单向关联)20Hibernate ORM代码关联21Hibernate ORM映射文件22Hibernate ORM代码23Hibernate
8、ORM配置24Hibernate ORM问题如Tstudent.hbm.xml中cascade=false,或者cascade=all,插入对象Tstudent时,情况怎样?删除对象tstudent时,会产生什么情况(cascade=false,或者cascade=all)?为什么说它是单向关联?怎样变成双向关联?如删除对象tunit,会删除关联的tstudent对象吗?25Hibernate ORM双向多对一关联增加Tstudent的集合类型26Hibernate ORM代码向两个关联表插入对象删除对象,结果会怎样?27Hibernate ORM关系映射(二)q一对一关联 当对象之间只存在唯
9、一的一对一关系时,在映射表中使用元素来定义映射关系 身份证-学生关系IDcardpid(PK)valid_datestudent_infosno(PK)snames_id(FK)外键关联28Hibernate ORM代码29Hibernate ORM映射文件30Hibernate ORM代码31Hibernate ORM关系映射(三)q多对多关联 借助中间表来完成多对多关联关系信息的保存,在映射文件中使用标签教师-课程关系teacherTCsise_courseteacherID(PK)tnamecid(PK)cnamet_id+c_id(PK,FK)中间表32Hibernate ORM代码33Hibernate ORM映射文件falsefalse34Hibernate ORM代码35Hibernate ORM总结q了解Hibernate的对象标识符q学习Hibernate的主键生成机制q掌握Hibernate的映射类型q掌握对象继承关系映射q掌握关联关系映射36