- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[Mapping]1 hibernate使用set,list,bag,idbag,map和array来实现集合映射
在日常系统建模经常会碰到两个实体之间一对多的关系,比如,用户和联系人的关系,如一个用户可以有0个或多个联系人,而一个联系人必须且只能属于一个用户。这样用户和联系人就形成了一对多的关系。Hibernate中的集合类型A、set使用set元素映射java.util.Set。使用java.util.HashSet初始化集合。它的元素顺序没有保存,并且不允许重复元素。这在典型的hibernate应用程序中是最常见的持久化集合。可以使用set映射java.util.SortedSet,且sort属性可以设置成比较器或者用于内存排序的自然顺序。使用java.util.TreeSet实例初始化集合。B、list可以使用list映射java.util.List,在集合表中用一个额外的索引列保存每个元素的位置。使用java.util.ArrayList初始化。C、bag idbag可以使用bag或者idbag映射java.util.Collection. Java没有Bag接口或者实现。然而,java.util.Collection允许包语义(可能的重复,不保存元素顺序)。Hibernate支持持久化的包(它内部使用列表,但是忽略元素的索引)。使用java.util.ArrayList初始化包集合。D、map可以使用map映射java.util.Map,保存键值对。使用java.HashMap初始化属性.可以使用map元素映射java.uti.SortedMap, 且sort属性可以设置为比较器或者用于内存排序的自然顺序。使用java.util.TreeMap实例初始化该集合。E、primitive-array arrayhibernate使用primitive-array(对于Java基本的值类型)和array(对于其他的一切)支持数组。但是它们很少用在领域模型中,因为hibernate无法包装数组属性。没有字节码基础设施,就失去了延迟加载,以及为持久化集合优化过的脏检查,基本的便利和性能特性A、用Set实现集合用Set实现pojo类的属性类型,使用set标签来实现映射。范例1:1.数据库这种一对多关系在数据库中一般利用外键来实现。以下是以postgresql数据库为例。CREATE TABLE users ( user_id int4 NOT NULL DEFAULT nextval(users_user_id_seq::regclass), change timestamp, username varchar(128) NOT NULL, CONSTRAINT users_pkey PRIMARY KEY (user_id))CREATE TABLE contact ( contact_id int4 NOT NULL DEFAULT nextval(contact_contact_id_seq::regclass), user_id int4, contact_name varchar(128), CONSTRAINT pk_contact PRIMARY KEY (contact_id), CONSTRAINT fk_contact_user_id FOREIGN KEY (user_id) REFERENCES users (user_id) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE)2.Pojo类这里主要为了说明集合映射,故只实现单向一对多的关系。如下例所使用的Set。当然我们也可使用List,Map,Array等public class MailUser {private int userID;private String userName; private SetContact contacts;}public class Contact {private int contactID;private MailUser mailUser;private String contactName;}3.配置文件这里我们不考虑执行效率等其它因素,只求Set集合实现一对多的关系映射。hibernate-mappingclass dynamic-update=true name=com.email.pojo.MailUseroptimistic-lock=all schema=public table=usersid name=userID type=java.lang.Integercolumn name=user_id /generator class=sequenceparam name=sequenceusers_user_id_seq/param/generator/idpr
您可能关注的文档
- 常用特殊服务代码表.doc
- 美国留学行李清单.doc
- This bag is hers.教学设计.doc
- FAB工艺资料.doc
- 机场常用名词(国际).doc
- 半导体行业用语.docx
- 乘搭飞机常用语句及词语.docx
- Lightmapping设置.docx
- 出国出境及国外短期生活必备英语-精华归纳.doc
- 2.机场常用英语.doc
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)