




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
零、由于原来看的那个主要是用的Annotation,而这个主要是用的xml,因为两个都要学,所以xml的就自己写了,Annotation的那个笔记太大,在网上找的,就不搬到这上面来了。一、第一个hibernate项目1、创建java项目2、创建User Library,加入依赖包* HIBERNATE_HOME/lib/*.jar* HIBERNATE_HOME/hibernate3.jar* 加入数据库驱动(mysql驱动)3、提供hibernate.cfg.xml文件,完成基本的配置4、建立实体类User.java5、提供User.hbm.xml文件,完成实体类的映射6、将User.hbm.xml文件加入到hibernate.cfg.xml文件中7、编写工具类ExoprtDB.java,将hbm生成ddl,也就是hbm2ddl8、建立客户端类Client,添加用户数据到mysql最好加入如下配置项,方便观察hibernate sql的生成:truetrue最好加入log4j配置文件,将该配置文件拷贝到src下,便于程序的调试二、junit简介:* 编写测试类XXTest,需要继承TestCase* 编写单元测试方法,方法名称必须为test开头,方法没有参数没有返回值,采用public修饰* 最好采用单独的目录存放测试程序* 建议使用断言掌握HIbernate的CRUD操作必须掌握get和load方法的差别?* get不支持lazy,load在默认情况下支持lazy* get加载数据,如果不存在返回null,而load返回ObjectNotFoundException异常Transeint* 没有被session管理* 在数据库中没有与之匹配的记录Persistent* 纳入session管理* 在数据库中有与之匹配的记录* 当属性发生改变,在清理缓存时(脏数据检查)会自动和数据库同步Detached* 没有被session管理* 在数据库中存在与之匹配的记录Session是一个持久化管理器简单了解hql三、hibernate基本映射实体类-表,采用标签映射实体类中的普通属性(不包括集合、自定义类和数组)-表字段,采用标签映射注意:如果实体类的名称或实体类中属性的名称和数据库关键字重复,将会出现问题可以考虑采用table属性和column属性对其进行重新命名 实体类的设计原则: *实现无参的默认的构造函数(默认不设置即有一个默认的无参的构造方法) * 提供一个标识 * 建议不要使用final修饰实体类 *建议为实体类生成getter和setter方法 主要了解如下主键生成策略: * identity * sequence * uuid* native * assigned * foreign了解hibernate.cfg.xml文件中的hbm2ddl属性四、hibernate一对一主键关联映射(单向关联Person-IdCard)一对一关联映射原理:让两个实体的主键一样,这样就不需要加入多余的字段了 idCard 五、hibernate一对一唯一外键关联映射(单向关联Person-IdCard)一对一唯一外键关联映射其实是多对一的特例采用标签来映射,指定多的一端unique为true,这样就限制了多的一端的多重性为一,就是这样来映射的。 六、session flush测试:session flush方法主要做了两件事:* 清理缓存* 执行sqlsession在什么情况下执行flush* 默认在事务提交时* 显示的调用flush* 在执行查询前,如:iteratehibernate按照save(insert),update、delete顺序提交相关操作需注意的是,在id生成策略中uuid和native是不同的,uuid在session.save()之后是不会发出sql语句的,而native在session.save()之后就会发出sql语句,若两者在save()之后再使用session.evict(user) /将user对象从session中逐出,即session的EntityEntries属性中逐出 方法,在在提交的时候,uuid会报错,而native则不会,因为native执行完save()方法之后就已经将发出了sql语句,已执行过持久化操作,而uuid的则没有执行,若再执行commit方法,则找不到相关的数据进行持久化而出错。七、hibernate一对一双向主键关联映射(双向关联PersonIdCard)需要在IdCard加入标签,指示hibernate将关联对象Person根据主键加载上来不影响存储,只影响加载t_idcard(id,cardNo)t_person(id,name) 其中id是外键,参考t_idcard中的id。idcard_hbm.xml:person.hbm.xml:idCard八、hibernate一对一唯一外键关联映射(双向关联PersonIdCard)一对一唯一外键关联双向采用标签映射,必须指定标签中的property-ref属性为关系字段的名称Person.hbm.xmlidcard.hbm.xml九、hibernate多对一关联映射关联映射,就是将关联关系映射到数据库中,所谓的关联关系在对象模型中就是一个或多个引用多对一关联映射原理:在多的一端加入一个外键,指向一的一端在多的一端采用如下标签映射:掌握级联的含义?* 级联是对象之间的连锁操作,它只影响添加、删除和修改CUDXml中只须在多的一方设置即可十、hibernate一对多关联映射(单向Classes-Student)一对多关联映射和多对一关联映射映射原理是一致的,都是在多的一端加入一个外键,指向一的一端它们的区别在于维护的关系不同:* 多对一维护的关系是:多指向一的关系,有了此关系,在加载多的时候可以将一加载上来* 一对多维护的关系是:一指向多的关系,有了此关系,在加载一的时候可以将多加载上来在一一端维护关系存在缺陷:* 因为多的一端Student不知道Classes的存在(也就是Student没有维护与Classes的关系)所以在保存Student的时候关系字段classesid是为null的,如果将该关系字段设置为非空,则将无法保存数据* 另外因为Student不维护关系,而Classes维护关系,Classes就会发出多余的update语句,保证Classes和Student有关系,这样加载Classes的时候才可以把该Classes对应的学生加载上来 注:在onetomany中貌似用不上级联,save的时候必须先save(student) 才能最后把classes给save进去,不能像其他那些关系映射一样有个cascade属性可以设置。在load的时候,也没有fetch属性,不能直接一条语句直接load出来,必须单个load十一、hibernate一对多关联映射(双向ClassesStudent)采用一对多双向关联映射的目的主要是为了主要是为了解决一对多单向关联的缺陷而不是需求驱动的一对多双向关联的映射方式:* 在一的一端的集合上采用标签,在多的一端加入一个外键* 在多的一端采用标签!注意:标签和标签加入的字段保持一直,否则会产生数据混乱inverse属性:* inverse属性可以用在一对多和多对多双向关联上,inverse属性默认为false,为false表示本端可以维护关系,如果inverse为true,则本端不能维护关系,会交给另一端维护关系,本端失效。所以一对多关联映射我们通常在多的一端维护关系,让一的一端失效,所以设置为inverse为trueinverse和cascade* inverse是控制方向上的反转,只影响存储* cascade是操作上的连锁反映Student.hbm.xml:Classes.hbm.xml!- - 注:感觉这个有问题,没弄出来,第一个不报错,第二个student中存不上classesid,就第三个还能勉强存上,郁闷.十二、hibernate多对多关联映射(单向User-Role)具体映射:User.hbm.xmlRole.hbm.xml十三、hibernate多对多关联映射(双向User-Role)映射方法:User.hbm.xmlRole.hbm.xml需要注意:* 生成的中间表名称必须一样* 生成的中间表中的字段必须一样十四、复合(联合)主键映射:通常做法是将主键相关字段放到一个单独的类中,这样类是有要求的:* 必须实现序列化接口* 覆盖equals和hashcode方法Xml文件如下十五、集合映射完成set、list、array、map的映射(字段(id,name))(字段(set_id, set_value))!- -(字段(list_id, list_index ,list_value))(字段( array_id, array_index ,array_value)) (字段( map_id, map_key ,map_value))注:set、array、list、map t_*_values各个表中的*_id都是外键引用的是t_collection_mapping表中的id,出了set表中的没有另外一个主键,其他的都是复合主键。十六、组件Component映射(其实很简单)在hibernate中Component映射采用标签即可Com
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒楼行政总厨聘用协议5篇
- 商场复工复产安全培训课件
- 国家事业单位招聘2025中国人民大学书院建设与管理中心招聘1人笔试历年参考题库附带答案详解
- 南部县2025上半年四川南充市南部县事业单位考调10人笔试历年参考题库附带答案详解
- 北海市2025广西互联网舆情中心招(实名编制)8人(截止5月27日)笔试历年参考题库附带答案详解
- 包河区2025年合肥包河区事业单位招聘劳务派遣人员29名笔试历年参考题库附带答案详解
- 云南省2025云南省教育后勤协会招聘1人笔试历年参考题库附带答案详解
- 上海市2025上海申康医疗卫生建设工程公共服务中心工作人员招聘1人笔试历年参考题库附带答案详解
- 2025重庆紫光国际化工有限责任公司招聘16人笔试参考题库附带答案详解
- 2025贵州茅台酒股份有限公司招聘158人笔试参考题库附带答案详解
- 养老护理员中级考试题库2025年(附答案)
- 2024年河北石家庄交通投资发展集团有限责任公司招聘考试真题
- 公安援疆工作总结
- 云南昆明元朔建设发展有限公司招聘笔试题库2025
- 湖南省益阳市2026届高三9月教学质量监测数学试题(含答案)
- 第8课《网络新世界》第一课时-统编版《道德与法治》四年级上册教学课件
- 2025秋人教版美术七年级第一单元 峥嵘岁月第1课 情感表达2
- 装饰工程拆除施工方案(3篇)
- 2025至2030年中国车载摄像头行业市场调研及投资战略规划建议报告
- 2025年招聘市场年中洞察报告-瀚纳仕
- 钢铁销售基础知识培训
评论
0/150
提交评论