[Mapping]1 hibernate使用set,list,bag,idbag,map和array来实现集合映射.docx

[Mapping]1 hibernate使用set,list,bag,idbag,map和array来实现集合映射.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档