第六阶段ssh三大框架hibernate_第1页
第六阶段ssh三大框架hibernate_第2页
第六阶段ssh三大框架hibernate_第3页
第六阶段ssh三大框架hibernate_第4页
第六阶段ssh三大框架hibernate_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、Hibernate第二课大纲映射文件一般格式元素元素元素元素Hibernate映射类型实体对象关联关系的映射Set接口类型的映射List接口类型的映射准备工作提示:本课涉及到许多的配置,为了方便我们了解配置是否正确,注意如下几点:需要创建表时将hbm2ddl.auto设置为create,这样程序运行会删除老的表,创建新的表结构。测试时先在数据库中录入相关数据,并将hbm2ddl.auto设置为update,防止因为创建新的表删除了输入的数据,导致测试失败。将文件:$hibernate_perties 复制到工程的src目录下,这样运行时可以看到更为

2、详细的日志信息。每次进行配置后,根据配置创建一个Session对象,如: HibernateSessionFactory.getSession();这时程序会加载并验证配置文件,并生成相应的数据表。仔细比较配置文件与生成的表及相关外键。hbm映射配置示例 元素常用属性package用于统一指定该元素内部所有元素对应的持久化类的包名元素class元素用来定义一个持久化类和一个数据库表之间的映射关系,常用属性:name持久化类的类名table对应的数据库表名dynamic-update用于指定执行update操作时是否动态生成update语句,默认是falsedynamic-insert用于指定执

3、行insert操作时是否动态生成insert语句,默认是false元素在Hibernate中必须给持久化类定义一个与对应的数据库表中主键相对应的属性,即对象标识符(OID)该属性必须使用元素配置generator指定OID的生成器类名,可使用Hibernate内置的生成器类关键字,常用的内置生成器如下所示:常用generator内置生成器increment适用于long,short,int型的代理主键,由Hibernate以增量1的方式递增identity适用DB2,MySQL,SQL Server,Sybase等支持标识字段产生的标识,用于long,short,intsequence适用于D

4、B2,Oracle中的序列产生的标识符,用于long,short,intnative根据底层的数据库的情况选择identity,sequence中的一个来生成主键Assigned 适用于业务主键,由java应用负责生成标识符元素元素定义了一个持久化类的属性与数据库字段之间的映射关系,常用属性有:name映射类属性名column映射数据库表字段名type字段的类型,使用Java类型或Hibernate类型updateupdate时是否包含本字段,当某个字段不需要修改时使用,默认为trueinsert insert时是否包含本字段,当某个字段不需要插入时使用,默认为trueaccess访问属性的策

5、略,property(getter/setter)|field(.)unique设置这个字段的值是否唯一,默认为falsenot-null 设置这个字段的值是否允许为空,默认为trueunique和not-null只有使用配置文件反向生成数据库表时才有用,用来指定该字段是否唯一以及是否允许为空Hibernate支持的映射类型Hibernate类型Java类型标准SQL类型int/integerint/java.lang.IntegerINTEGERlonglong/java.lang.LongBIGINTshortshort/java.lang.ShortSMALLINTbytebyte/ja

6、va.lang.ByteTINYINTfloatfloat/java.lang.FloatFLOATdoubledouble/java.lang.DoubleDOUBLEcharacterchar/java.lang.CharacterCHAR(1)stringjava.lang.StringVARCHARdatejava.util.Data/java.sql.DateDATEtimejava.util.Data/java.sql.TimeTIMEtimestampjava.util.Data/java.sql.TimestampTIMESTAMPcalendarjava.util.Calen

7、darDATEbinarybyteVARBINARY/BLOBtextjava.lang.StringCLOB/TEXTclobjava.sql.ClobCLOBblobjava.sql.BlobBLOB配置type 关于日期映射类型Java类型标准SQL类型描述datejava.util.Date或者java.sql.DateDATE代表日期,形式为:YYYY-MM-DDtimejava.util.Date或者java.sql.TimeTIME代表时间,形式为:HH:MM:SStimestampjava.util.Date或者java.sql.TimestampTIMESTAMP代表时间和日

8、期,形式为:YYYYMMDDHHMMSScalendarjava.util.CalendarTIMESTAMP同上calendar_datejava.util.CalendarDATE代表日期,形式为:YYYY-MM-DD关于日期在标准SQL中,DATE类型表示日期,TIME类型表示时间,TIMESTAMP类型表示时间戳,同时包含日期和时间信息。对类型为TIMESTAMP的列,当没有插入值时,系统会将当前系统时间做为默认值。实体对象关系:一对一关系实体对象之间一对一的关联是通过数据库的外键实现的外键的使用有以下两种方式主键关联 不需要借助额外字段,直接通过两个表的主键来关联,两表中相关联的记录

9、要使用相同的主键值唯一外键关联 某个表的外键字段关联到另一个表的主键字段上,是多对一关联的特例实体对象关系:一对一关系idname1张三2李四学生表idtel11102119地址表1. 主键关联通过元素来定义对象之间的一对一的关联关系,另外为了确保两个对象的主键值相等,外键方主键使用名称为foreign的标识符生成策略:对应的属性名字实体对象关系:一对一关系示例1:通过共享主键的方式完成Student和Address之间双向的一对一关联。public class Student private Long id;private String name;private Integer age;pr

10、ivate Address address;首先需要在Student对象的配置文件中定义到Address对象的关联: 然后需要在Address对象的配置文件中定义到Student对象的关联并修改Address对象配置文件的id元素public class Address private Long id;private String tel;private String homeAddress;private String email;private Student student;实体对象关系:一对一关系student表示主键值来自属性student对象的主键值实体对象关系:一对一关系idna

11、me1张三2李四学生表idtels_id111102121191地址表2. 唯一外键关联这种关联方式实际上是一个表的某个外键字段关联到另一个表的主键上,其实是一对多关联关系的特例。在配置时使用和来实现。示例2:通过唯一外键方式完成Student和Address之间双向的一对一关联。实体对象关系:一对一关系指定关联类的属性名即表示对方通过这个属性与本类关联Student.hbm.xml文件:实体对象关系:一对一关系Address.hbm.xml文件:一对多关联关系的映射一对多关联关系在现实的应用系统中是最常见的一种关联关系。例如班级对象和学生对象。对于任意一个关联关系都存在着两个方向的问题。一对

12、多的关联关系在”一”这一方进行配置,反过来从”多“这一方来考虑,这个关联关系就变成多对一的关联关系。下面先在一方配置单向的一对多关联,首先要借助元素来表示持有“多”方的对象,然后在元素内部使用元素。一对多关联关系的映射示例3:完成班级与学生之间的单向一对多关联Student类文件和配置文件不变,Clazz类文件代码如下:public class Clazz private Long id;private String Name;private Set students = new HashSet();一对多关联关系的映射idname1100班2101班班级表idnamec_id11小刘112小

13、李113小王114小郑2学生表一对多关联关系的映射Clazz.hbm.xml文件如下:关联的目标类操作时的级联关系,在执行save和update时进行级联操作使”多“的一方变为主控方,用在双向关联关系中,后面解释指定关联方与本类关联的外键字段Set接口类型的映射对于实体对象中Set接口类型的属性,使用元素来描述,通常代表“多”的一端,的常用属性如下:name映射类属性的名字lazy是否采用迟延加载inverse标识双向关联中被动的一方,为true时表示控制方为对方在对象的关联关系中,“inverse=false”的一方为主控方,由它来负责维护对象之间的关联关系。元素元素是的子元素,必不可少,用

14、于描述两者之间的关联关系元素的常用属性:column父元素所持有的类所对应表的外键字段名on-delete外键关联是否打开数据库级别的级联删除,noaction|cascadenot-null表明外键字段是否可以为空,true|falseupdate表明外键是否可以被更新,true|falseunique表明外键是否有唯一性约束,true|false一对多关联关系的映射对于单向的关联关系只能通过主控方(Clazz)来实现对被控方(Student)的级联更新。Student对象并不知道它属于哪个班级对象的,所以这里定义的关联关系只能通过班级对象来维护。为了可以方便地从任意一方进行数据的维护,通常将一对多的关联关系配置为双向。多对一关联关系是一对多关联关系的反向,需要在“多”的一方使用来实现。一对多关联关系的映射示例4:完成班级与学生之间双向的一对多关联。Student类文件修改如下:public class Student private Long id;private String name;private Integer age;private Clazz clazz;private Address address;多对一关联关系

温馨提示

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

评论

0/150

提交评论