hibernate值类型的set、bag、list和map(非实体bean类型的).doc_第1页
hibernate值类型的set、bag、list和map(非实体bean类型的).doc_第2页
hibernate值类型的set、bag、list和map(非实体bean类型的).doc_第3页
hibernate值类型的set、bag、list和map(非实体bean类型的).doc_第4页
hibernate值类型的set、bag、list和map(非实体bean类型的).doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

hibernate 值类型的set、bag、list和map (非实体bean类型的) 分类: hibernate 2011-10-19 18:01 35人阅读 评论(0) 收藏 举报 选择集合接口:1、使用元素映射java.util.Set。使用java.util.HashSet初始化集合。它是无序且不允许重复。2、使用映射java.util.SortedSet。且sort属性可以设置成比较器或者用于内存的排序的自然顺序。使用java.util.TreeSet实例初始化集合。3、使用映射java.util.List。在集合表中用一个额外的索引列保存每个元素的位置。使用java.util.ArrayList初始化。4、使用或者映射java.util.Collection。java没有Bag接口或者实现;然而,java.util.Collection允许包语义。hibernate支持持久化的包。使用java.util.ArrayList初始化包集合。5、使用映射java.util.Map,保存键和值对。使用java.util.HashMap初始化属性。6、使用映射java.util.SortedMap。且sort属性可以设置为比较器或者用于内存排序的自然顺序。使用java.util.TreeMap实例初始化该集合。7、hibernate使用和支持数组。但是他们很少使用在领域模型中。因为hibernate无法包装数组属性,没有字节码基础设施(BCI),就失去了延迟加载,以及持久化集合优化过的脏检查、基本的便利和性能特性。映射Set:无序不允许重复:类: view plaincopy to clipboardprint?1. /*2. * 实现String类型的set集合,非class(实体bean)集合3. */4. publicclassItemimplementsSerializable 5. privateintitemId;6. privateString itemName;7. 8. /不允许重复9. privateSet images =newHashSet();配置文件: view plaincopy to clipboardprint?1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 插入2: view plaincopy to clipboardprint?1. Item item =newItem();2. item.setItemName(hello world);3. item.getImages().add(image1);4. item.getImages().add(image1);5. hibernate 打印 sql:6. Hibernate: insert into Item (itemName) values (?)7. Hibernate: insert into ITEM_IMAGES (ITEM_ID, FILENAME) values (?, ?)插入2: view plaincopy to clipboardprint?1. Item item =newItem();2. item.setItemName(hello world);3. item.getImages().add(image1);4. item.getImages().add(image2);5. hibernate打印sql:6. Hibernate: insert into Item (itemName) values (?)7. Hibernate: insert into ITEM_IMAGES (ITEM_ID, FILENAME) values (?, ?)8. Hibernate: insert into ITEM_IMAGES (ITEM_ID, FILENAME) values (?, ?)映射bag:有序允许重复:类: view plaincopy to clipboardprint?1. /*2. * 允许重复元素的无序集合bag3. */4. publicclassItemimplementsSerializable 5. privateInteger itemId;6. privateString itemName;7. privateCollection images =newArrayList();配置文件: view plaincopy to clipboardprint?1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 插入: view plaincopy to clipboardprint?1. Item item =newItem();2. item.setItemName(hello world);3. item.getImages().add(image1);4. item.getImages().add(image1);hibernate打印sql:Hibernate: insert into Item (itemName) values (?)Hibernate: select max(ITEM_IMAGE_ID) from ITEM_IMAGESHibernate: insert into ITEM_IMAGES (ITEM_ID, ITEM_IMAGE_ID, FILENAME) values (?, ?, ?)Hibernate: insert into ITEM_IMAGES (ITEM_ID, ITEM_IMAGE_ID, FILENAME) values (?, ?, ?)注意:这里的generator给的类型是increment,如果mysql给的是native或者identity会报错:org.hibernate.id.IdentifierGeneratorFactory$2 cannot be cast to java.lang.Integer但是oracle使用native、sequence不会报错(应该是这个版本的hibernate的bug)*删除*:(如果没记错的话,类类型的set集合,是不会删除子集的,只默认级联一的一端)这里是都级联删除的Item item = (Item) session.get(Item.class, 2);session.delete(item); Hibernate: select item0_.itemId as itemId0_0_, item0_.itemName as itemName0_0_ from Item item0_ where item0_.itemId=?Hibernate: delete from ITEM_IMAGES where ITEM_ID=?Hibernate: delete from Item where itemId=?映射list(允许重复,有序): view plaincopy to clipboardprint?1. /*2. * 映射list3. */4. publicclassItemimplementsSerializable 5. privateInteger itemId;6. privateString itemName;7. privateList images =newArrayList();配置文件: view plaincopy to clipboardprint?1. 2. 3. 4. 5. 6. 7. 8. 9. !-2.X兼容方式,不在使用 -10. 11. 12. 13. 14. 插入: view plaincopy to clipboardprint?1. Item item =newItem();2. item.setItemName(hello world);3. item.getImages().add(image1);4. item.getImages().add(image1);hibernate打印sql:Hibernate: insert into Item (itemName) values (?)Hibernate: insert into ITEM_IMAGES (ITEM_ID, POSITION, FILENAME) values (?, ?, ?)Hibernate: insert into ITEM_IMAGES (ITEM_ID, POSITION, FILENAME) values (?, ?, ?) (POSITION记录的就是list的指针位置0、1、2.)删除: view plaincopy to clipboardprint?1. Item item = (Item) session.get(Item.class,2);2. session.delete(item);Hibernate: select item0_.itemId as itemId0_0_, item0_.itemName as itemName0_0_ from Item item0_ where item0_.itemId=?Hibernate: delete from ITEM_IMAGES where ITEM_ID=?Hibernate: delete from Item where itemId=? 映射map(无序,不允许重复):类: view plaincopy to clipboardprint?1. /*2. * 映射map3. */4. publicclassItemimplementsSerializable 5. privateintitemId;6. privateString itemName;7. 8. privateMap images =newHashMap();配置文件: view plaincopy to clipboardprint?1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 插入: view plaincopy to clipboardprint?1. Item item =newItem();2. item.setItemName(hello world);3. item.getImages().put(imagename1,filename1);4. item.getImages().put(imagename1,filename1);hibernate打印sql:Hibernate: insert into Item (itemName) values (?)Hibernate: insert into ITEM_IMAGES (ITEM_ID, IMAGENAME, FILENAME) values (?, ?, ?)映射sortedmap,排序集合:类: view plaincopy to clipboardprint?1. /*2. * 映射sortedmap,排序集合3. */4. publicclassItemimplementsSerializable 5. privateintitemId;6. privateString itemName;7. 8. privateSortedMap images =newTreeMap();配置文件: view plaincopy to clipboardprint?1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 插入: view plaincopy to clipboardprint?1. Item item =newItem();2. item.setItemName(hello world);3. item.getImages().put(imagename2,filename2);4. item.getImages().put(imagename1,filename1);hibernate打印sql:Hibernate: insert into Item (itemName) values (?)Hib

温馨提示

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

评论

0/150

提交评论