



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权,请联系网站删除Hibernate的集合映射本文主要针对Hibernate的Set、List、Array、Map、Bag五个集合映射进行详细的讲解。POJOs如下:Customer类-customer表Order类对应-orders表customer(1)(n)order1. publicclassCustomer 2. 3. privateStringid; 4. privateStringusername; 5. privateStringpassword; 6. privateTimestampregisterTime; 7. privateintage; 8. privateSetorders=newHashSet(); 9. /*setterandgettermethod*/10. 1. publicclassOrder 2. 3. privateStringid; 4. privateStringorderNumber; 5. privateintbalance; 6. privateCustomercustomer; 7. /*setterandgettermethod*/8. Set集合映射:Hibernate为集合映射提供了专用的标签元素,Set集合映射,就使用标签表示:1. 2. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 标签中的name属性表示customer对象中关系集合的属性名,inverse与cascade属性说明(参考这里)。在数据库中表示一对多的关系是通过外键关联的方式实现的,多方通过持有一方的主键值来确定关系,怎么持有一方的主键值?多方将使用一列来存储一方的主键值,然后将此列作为外键列参照一方的主键列。所以使用Hibernate开发时需要将两表的关系列(外键列)告诉Hibernate,就是完成这个工作的,Hibernate就能根据 customer_id列取出关联信息。例如:从customer表中取出一条记录后,Hibernate会根据该customer记录的主键值再从order表中查找custom_id列,取出值相等的记录,然后组装到Customer对象中的set集合属性中,反之亦然。因为取出来的记录(只是一些零碎的值,还没有组装成对象)需要存放到Set集合中,所以要告诉Hibernate在Set集合里面能放什么类型的数据。这个标签就是完成这个工作的,class属性是指定这个这个Set集合里面元素的类型。1. 2. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 标签是设置一对多关系中的多方的,name指定了哪一个属性是关系属性,class指定了关系属性的类型(也指定了与哪一个表关联), column属性是指定这个关联属性是按照customer_id列的值,在customer表中查询获得的。测试:1. tx=session.beginTransaction(); 2. /* 3. *创建Customer对象,并设置其属性值 4. */5. Customercustomer=newCustomer(); 6. customer.setUsername(zhangsan); 7. customer.setPassword(123456); 8. customer.setAge(22); 9. customer.setRegisterTime(newTimestamp(newDate().getTime(); 10. /* 11. *创建Order对象order1,并设置其属性值 12. */13. Orderorder1=newOrder(); 14. order1.setOrderNumber(a1a2a3); 15. order1.setBalance(1000); 16. order1.setCustomer(customer); 17. /* 18. *创建Order对象order2,并设置其属性值 19. */20. Orderorder2=newOrder(); 21. order2.setOrderNumber(d3d2d1); 22. order2.setBalance(670); 23. order2.setCustomer(customer); 24. customer.getOrders().add(order1); 25. customer.getOrders().add(order2); 26. session.saveOrUpdate(customer); 27. mit();查看数据库的数据:customer表:orders表可以看到数据被成功的插入到数据库中了,并且custom_id列(关系列)也正确赋值了。List映射:Hibernate为集合映射提供了专用的标签元素,List集合映射,就使用标签表示:1. 2. 3. 4. 5. List集合是有顺序的,index标签,是用于记录顺序,List的顺序将表现在customer_index列上,其余设置,与Set集合类似。注意:List映射中inverse中的值不能设置为true,因为List集合的顺序只有customer方知道,order方不知道List的存在。不然,customer_index的列值将不会被赋值。查看数据库:customer表:orders表:可以看到记录正确的插入到数据库中了,而且custom_index正确的表示出List的顺序。Array(数组)映射:标签使用其他与List基本一致。Map映射:Hibernate为集合映射提供了专用的标签元素,Map集合映射,就使用标签表示:1. 2. 3. 4. 5. Map映射中标签,表示Map集合中的key值,记录在order_key列中,表示Map集合中的vlaue。其他设置与上面一样。注意:inverse不要设置成true因为key值是customer对象维护的,而order不知道key的存在。Bag映射:它是List与Set集合的结合,可以重复,但是无顺。使用List模拟Bag。设置类似Set,它也有专用标签。总 结在没有特殊要求下,最好使用Set集合,因为Set集合没有特殊信息需要一方自己维护,可以完全交给多方维护,能够提高性能,若需要记录数据的顺序可以使用List和Array映射,若需要key/value形式存储数据,可以使用Map映射。最后一点若集合放置的数据简单类型(原生类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 应急安全工作培训课件
- 2025山东省莱州市中考数学经典例题含答案详解【能力提升】
- 婴幼儿秋季腹泻生理机制与高发原因解析
- 2024年自考专业(金融)自我提分评估含答案详解【典型题】
- 酒精消费与癌症风险
- 借贷双务合同(标准版)
- 补充协议补充合同(标准版)
- 做账实操-《民非会计制度》的核算内容
- 2024-2025学年中医助理医师每日一练试卷及参考答案详解(A卷)
- 2025年能源与资源行业:新能源储能系统性能优化与成本控制策略报告001
- 安徽科技馆笔试题目及答案
- 厂房分割租赁协议书
- 会计中级职称《财务管理》电子书
- GB/T 45345-2025金属及其他无机覆盖层工程用直流磁控溅射银镀层镀层附着力的测量
- 无人机教员聘用协议书
- 脑科生理病理图谱解读
- 足球教练员的职业素养与道德规范
- 产地证培训讲义
- 《南京理工大学化工》课件
- 养殖场远程视频监控解决方案
- 二手车转让免责协议书范本
评论
0/150
提交评论