欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Hibernate3实体映射.ppt

    • 资源ID:5433132       资源大小:1.18MB        全文页数:27页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Hibernate3实体映射.ppt

    Hibernate实体映射,映射对象标识符 映射字段类型 映射关联关系,本章目标,自然主键,在关系数据库表中,主键用来标识记录并保证每条记录唯一性,主键字段必须满足以下条件不允许有null每条记录具有唯一的主键值每条记录的主键值永远不变把数据库表中具有业务含义的主键字段称为自然主键,比如:用户名身份证号码订单编号,代理主键,自然主键不能满足不断变化的业务需求,一旦业务需求变化,就必须修改数据模型重新定义表的主键,给数据库的维护增加了难度因此,在数据库设计时引入了代理主键,代理主键不具备任何的业务含义,一般为整数,因为整数比字符串节省存储空间:SQL Server和My SQL中的自动增长类型Oracle和DB2中的序列(Sequence),Hibernate几种内置的标识符生成器,Hibernate内置标识符increment:由Hibernate负责主键递增(查询最大id值之后加1,要多查询一次数据库,并且并发访问会出错)identity:采用数据库自增主键生成机制,如SQL Server、My SQL,但是Oracle等不支持sequence:采用数据库提供的sequence生成机制,如Oracle、DB2,但是SQL Server、My SQL不支持hilo:需要额外数据库表保存主键生成历史状态uuid:由hibernate基于唯一值算法生成表示一个 128 位的值(32个字符),最大的保证唯一性,可能数万年才出现一次重复,可以在不同数据库之间移植native:由hibernate自动判断数据库类型而采用不同的生成机制,选择使用identity,sequence,hilo标识生成器assigned:由应用程序负责生成主键,不能把setId()的方法设置成private如果把设置为validate,对于native和sequence需要先建一个名为HIBERNATE_SEQUENCE的Sequence(Oracle),UUID,UUID(UniversallyUniqueIdentifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。在Java中生成UUID的方式(java.util.UUID类)Stringuuid=UUID.randomUUID().toString();,class元素的配置,name:POJO实体类名table:映射的表名,如果省略,默认和实体类名一致dynamic-insert:true/false,如果为true,根据实体类的值,生成SQL,如果实体类中有空字段,相应的字段不生成insert语句中dynamic-update:true/false,如果为true,根据实体类的值,生成SQL,如果实体类中有空字段,相应的字段不生成update语句中lazy:是否延迟加载,true为延迟加载,false为立即加载,默认为true,id元素的配置,name:POJO实体类属性名,以小写字母开头column:对应数据库的字段名,如果省略,默认为实体类的属性名type:映射类型,可选Hibernate基本类型:integer,float,string,character,timestamp,date等Java基本类型:int,float,char,java.lang.String,java.util.Date等自定义类的类名access:可选,默认为property,表示Hibernate通过setXXX和getXXX方法来访问实体类属性,如果设置为field,表示直接访问实体类的属性,property元素的配置,name:POJO实体类属性名,以小写字母开头column:对应数据库的字段名,如果省略,默认为实体类的属性名type:映射类型,可选Hibernate基本类型:integer,float,string,character,timestamp,date等Java基本类型:int,float,char,java.lang.String,java.util.Date等自定义类的类名update:true/false,表明insert的SQL语句中是否包含这个字段Insert:true/false,表明update的SQL语句中是否包含这个字段access:可选,默认为property,表示Hibernate通过setXXX和getXXX方法来访问实体类属性,如果设置为field,表示直接访问实体类的属性unique:为该字段添加唯一约束not-null:该字段是否可以为空,映射多对一单向关联,多对一关联关系:以客户(Customer)和订单(Order)为例,一个客户可以有多个订单,反过来一个订单只能属于一个客户,从订单这一边来看就是多对一关联关系多对一的关联关系用POJO映射文件中的子元素来进行配置首先要在Order类中建一个类型为Customer的私有属性,意为每个订单都会属于某一个客户接着需要进行多对一的映射配置()必须是在多的一方进行配置,以上例也就是必须在订单(Order)的映射文件Order.hbm.xml中进行配置,many-to-one元素的配置,name:设定待映射持久化类的属性名,此属性的类型应该是关联的另一个持久化类column:设定和持久化类的属性对应的外键字段class:设定name所定义的属性的类型cascade:用于指定如何操作与当前对象关联的其他对象none:保存、更新或删除对象时,忽略其他关联对象,默认值save-update:通过save(),update()以及saveOrUpdate()方法保存或更新当前对象时,级联保存和更新关联对象delete:通过delete()方法删除当前对象时,级联删除关联对象all:包含save-update和delete行为。此外,对当前对象执行evict()或lock()操作时,也会对关联对象执行相同操作delete-orphan:删除所有和当前对象解除关联关系的对象all-delete-orphan:包含all和delete-orphan的行为lazy:是否延迟加载,false为立即加载proxy为延迟加载,默认为proxynot-null:该字段是否可以为空unique:为该字段添加唯一约束update:true/false,表明insert的SQL语句中是否包含这个字段Insert:true/false,表明update的SQL语句中是否包含这个字段,映射一对多单向关联 1,一对多关联关系:以客户(Customer)和订单(Order)为例,一个客户可以有多个订单,反过来一个订单只能属于一个客户,从客户这一边来看就是一对多关联关系一对多的关联关系用POJO映射文件中的子元素来进行配置首先要在Customer类中建一个类型为Set的私有集合属性orders,意为每个客户拥有的订单列表接着需要进行一对多的映射配置()注:在工程中同时映射两个单向关联时,需要将外键字段的not null设置去除,映射一对多单向关联 2,必须是在一的一方进行配置,以上例也就是必须在客户(Customer)的映射文件Customer.hbm.xml中进行配置,set元素的配置,name:待持久化类属性名,以小写字母开头cascade:save-update,级联保存和更新lazy:是否延迟加载,true为延迟,false为不延迟inverse:由谁来维护关联关系,双向关联时应设为true,表明由被关联的一方维护关联关系注:inverse属性只有在双向关联时才能去维护column:外键字段名class:集合中存放的对象类型,映射一对多双向关联 1,一对多关联关系:以客户(Customer)和订单(Order)为例,一个客户可以有多个订单,反过来一个订单只能属于一个客户,如果同时从一的一方和多的一方映射就是一对多双向关联关系一对多的双向关联关系需要在Custmoer类的映射文件中的子元素来进行配置一对多的关联,还需要在Order类的映射文件中的子元素来进行配置多对一的关联首先要在Customer类中建一个类型为Set的私有集合属性orders,意为每个客户拥有的订单列表,还要在Order类中建一个类型为Customer的私有属性,意为每个订单都会属于某一个客户接着需要进行一对多的映射配置(),映射一对多双向关联 2,还需要进行多对一的映射配置()必须是在多的一方进行配置,也就是必须在订单(Order)的映射文件Order.hbm.xml中进行配置注意:配置一对多的双向关联时不需要设置not-null=“true”属性,映射一对多双向自身关联 1,一对多双向自身关联关系:以雇员(Employee)为例,一个雇员可以有多个下属,反过来一个雇员只能有一个上级,这就是一对多双向自身关联关系一对多的双向自身关联关系需要在映射文件中同时配置子元素和子元素首先要在Employee类中建一个类型为Employee的私有属性mgr,意为每个雇员都有一个上级(也可以没有上级);还需要在类中建一个类型为Set的underling的属性,意为一个雇员可以有多个下属接着需要在Employee.hbm.xml中同时进行 和的映射配置,映射一对多双向自身关联 2,映射一对一关联,一对一关联关系:以人(Person)和护照(Passport)为例,一个人只能有一个护照,反过来一个护照也只能属于一个人,这就是一对一关联关系一对一的关联关系在映射文件中用的子元素来进行配置一对一的关联关系包括如下两种类型主键关联唯一外键关联,映射一对一主键关联,首先创建POJO类Person和Passport,两者相互持有对方的引用其中Passport类的主键又作为外键参照Person的主键值在Person.hbm.xml中元素下配置如下在Passport.hbm.xml中元素下配置如下person,id元素在one-to-one中的配置,name:POJO类对象的标识符,通常为主键属性名class:对应数据库表字段名:为持久化类实例生成唯一标识class:foreign,代表使用另一个相关联对象的标识符:生成器实例需要的配置值和初始化参数name:property,代表引用的是一个属性value:代表对象的引用名和起来意为生成的主键需要引用哪个对象上的属性,属性的名称就是id元素的name的所用的属性名,one-to-one元素的配置,name:一对一映射另一方的类对象的属性名class:一对一映射另一方的属性的类型cascade:all,级联保存、更新和删除(在主控方配置)constrained:true,表的主键同时作为外键参照关联的另一方的主键(在被控方配置),映射一对一外键关联,以Classes(班)和Monitor(班长)为例,MONITOR表中定义一个外键,参照CLASSES表的主键,对于一个班来说只有一个班长,而一个班长也只能属于一个班一个班有多个学员,班长只是班中学员的一个特例,因此在Monitor.hbm.xml文件中用元素做映射,只是需要多加一个唯一约束在Classes.hbm.xml文件中用元素做映射|-表明建立从classes到Monitor对象的关联,映射多对多关联,以Teacher(教师)和Student(学生)为例,一个教师可以有多个学生,而一个学生也可以有多个教师,这就是多对多的关联关系需要在Teacher中定义Student的集合属性,在Student中定义Teacher的集合属性在映射文件中用元素进行映射Student.hbm.xmlTeacher.hbm.xml,映射复合主键,复合主键:指有多个字段同时做为主键在Hibernate中,通过的子元素元素对复合主键进行定义(此元素和元素不能同时存在)对于复合主键而言,有两种映射方式:基于实体类属性的复合主键:复合主键由实体类中的某几个属性组成基于主键类的复合主键:复合主键由单独的主键类进行描述主键类必须实现java.io.Serializable接口主键类必须实现equals方法和hashcode方法以作为不同数据之间的标识,映射基于实体类属性的复合主键,以学生成绩表(STUDENT_GRADE)为例,主键为(STUDENT_ID+SUBJECT_ID)用映射文件配置如下:,映射基于主键类的复合主键,以学生成绩表(STUDENT_GRADE)为例,主键为(STUDENT_ID+SUBJECT_ID)为此创建独立的主键类StudentGradePK用映射文件配置如下:,

    注意事项

    本文(Hibernate3实体映射.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开