首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NHibernate:为什么要使用<composite-element>而不是<one-to-many>来映射集合

NHibernate是一个开源的对象关系映射(ORM)框架,用于将对象模型与关系型数据库进行映射。在NHibernate中,<composite-element>和<one-to-many>都是用于映射集合的元素。

<composite-element>用于映射复合元素集合,即集合中的每个元素都是一个复合对象,由多个属性组成。使用<composite-element>可以将集合中的每个元素映射为一个复合对象,而不是一个独立的实体对象。这样可以更好地表示集合中的复杂数据结构,提高数据的组织性和可读性。

<one-to-many>用于映射一对多关系,即一个实体对象关联多个子对象。使用<one-to-many>可以将集合中的每个元素映射为一个独立的实体对象,每个对象都有自己的唯一标识符。这样可以更好地表示实体对象之间的关系,提供更灵活的操作和查询。

选择使用<composite-element>还是<one-to-many>取决于集合元素的特性和需求。如果集合元素是一个复合对象,由多个属性组成,并且不需要独立的唯一标识符,那么可以选择使用<composite-element>来映射集合。如果集合元素是一个独立的实体对象,并且需要独立的唯一标识符,那么可以选择使用<one-to-many>来映射集合。

NHibernate提供了丰富的映射选项和配置,可以根据具体的需求选择适合的映射方式。在使用NHibernate进行开发时,可以根据实际情况选择合适的映射方式,以实现更好的数据模型和操作效果。

关于NHibernate的更多信息和相关产品介绍,可以参考腾讯云的文档和官方网站:

相关搜索:您将如何使用散列映射而不是集合来解决此问题?为什么要锁定Collection.SyncRoot而不是只锁定集合?NHibernate - 使用抽象基础来提供功能而不是接口是否可以?使用Mapster映射时,获取空集合而不是null为什么要调用$ .getScript而不是直接使用<script>标记?为什么在java集合中使用游标而不是for循环为什么人们继续使用xml映射文件而不是注释?哈希集是否可以在内部使用其他集合而不是哈希映射为什么要检测HTTP协议,而不是只对JS、AJAX、CSS等链接内容使用'//‘?JSON-B使用toString而不是注册适配器来序列化映射键为什么我的对象使用等号而不是分号/对象文字符号来记录?为什么使用exams2pdf而不是exams2moodle来渲染TikZ图形?在XML库中,为什么qt使用qhash而不是QMap来存储qtXml元素属性?为什么要使用"newInstance()“而不是kotlin中的关键字"new”来创建xmlPullParserFactory?为什么输出要提前结束一行,并用setfill填充每个空格,而不是用它来创建一行?为什么express仍然使用require而不是es6 import来启动express应用程序?在有向图中,为什么使用完成时间而不是发现时间来确定强连接组件?为什么我们使用序列化器而不是完整的clean来验证模型,或者我们应该互换使用它们?为什么我们总是要在命中测试中使用集合的第一个元素,而不是最后一个?当我使用.map而不是硬编码来动态填充内容时,为什么材料UI选项卡停止工作?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Fluent Nhibernate之旅(五)--利用AutoMapping进行简单开发

    Fluent Nhibernate(以下简称FN)发展到如今,已经相当成熟了,在Nhibernate的书中也相应的推荐了使用FN来进行映射配置,之前写的FN之旅至今还有很多人会来私信我问题,说来惭愧,从...Mapping 五、一对多映射:One-to-Many Mapping 六、Fluent NHibernate之旅(四)-- 关系(下) 安装 现在在项目中使用FN很方便,使用Nuget管理就可以了...用ExposeConfiguration方法委托Nhibernate的SchemaExport来创建数据库架构,相信很多NH玩家都会用吧。...这是为什么呢?...Fluent Nhibernate确实是个好东西,让我在开发上省去了很多时间,今天虽然介绍了AutoMapping,但我不推荐您在您的项目中使用,用起来没手感(个人感觉),需要约定的东西太多了,对于数据库结构也得按照他的契约来

    97860

    Fluent NHibernate之旅(四)-- 关系(下)

    一、开篇:ISessionFactory Configuration 二、实体映射:Entity Mapping 三、继承映射:Inheritence Mapping 四、一对一映射:One-to-One...Mapping 五、一对多映射:One-to-Many Mapping 场景和数据库设计 前两篇我们介绍了“一对一”和“一对多(多对一)”,或许前两种用的比较多,但多对多的关系,有时候我们也会遇到,...这里说一下,订单对于产品来说,不一定需要知道,也或者可以不需要一起加载,所以可以用延迟加载或者不加载,而产品对于订单来说,应该是需要立即加载,从而知道订单中所有的商品。...测试 映射完成了,我们测试一下,我们还是使用xunit来单元测: [Fact] public void CreateOrder() { using(var session = this.SessionFactory.OpenSession...PS2:貌似不是很多人喜欢,或许文笔不太好,继续锻炼中。如果有不好的,大家可以联系我。

    727100

    Fluent NHibernate之旅二--Entity Mapping

    如果你要体验NHibernate的强大,首先你就要学会配置,包括SessionFactory和Mapping的配置。今天跟上一篇一样,会使用传统方式和 NHibernate 进行讲解。...本节内容: 简单实体映射 使用自定义类型映射实体属性 NHibernate的实体映射(Entity Mapping)做的非常好,虽然不是完美,但一些我们经常使用的,基本上已经都支持了,而且配置也相对比较简单...对于我这种新手来说,Fluent更适合我,因为我可以用它来进行学习NHibernate。 映射做好了,接下来我们在NHibernate中把映射加到配置中。...二、使用自定义类型映射实体属性 NHibernate支持我们用自定义的类型来映射属性,但因为我是初学,我真的不会,当然我在网上找到了相关的资料,在此也不多说,就说说Fluent的方式吧,在我映射自定义属性的时候...,而传统方式作为学习之用。

    1.1K90

    架构之路(六):把框架拉出来

    所以,如果你愿意,就静下心来,听我细细道来吧。 尴尬 在确定了忘记数据库的大原则之后,我们理应从业务层入手开始系统的搭建。 /* 为什么不是从UI层开始?...从技术层面来讲,我们只能依靠ORM工具了,我用的是NHibernate。简 单的说,通过NHibernate,我们可以在对象和数据库结构中建立关系(映射)。.../// 为什么是NHibernate? /// 1、我的项目开始得比较早,好几年前了,应该是。...这就有“代码映射真实世界”,一种逻辑自洽的感觉;而不是之前,一辆汽车取出十辆汽车的样子。...都搅在一起,真不知道该放在哪里说 为什么不使用Repository模式而采用Query ViewMode的Map:使用Automapper 单元测试:Query又要搅到数据库,唉……

    59990

    Fluent NHibernate之旅(四)-- 关系(上)

    ,不是说我们Fluent能简单,只是传统方式的xml看上去不太美观,而Fluent这种代码式方式,更能符合我们Developer的习惯。...ID与User的ID是一致的,所以我们要使用Foregin来获取User的ID。...我们的一对一简单映射也说完了,同时也完成了Component的映射,接下来说说延迟加载 一对一延迟加载 细心的朋友一定会发现我们的output出来的Sql语句,使用的是联合查询,但有时对我们来说,只需要...User就可以了,我不需要查询UserDetail,或许你会说,使用以下方式来进行延迟加载: HasOne(u => u.Detail).Cascade.All().LazyLoad...NHibernate是不支持one-to-one的延迟加载的,我也不知道为什么,但我们可以婉转的进行延迟加载,老赵已经在他的文章“NHibernate中一对一关联的延迟加载”中提出了解决方案,大家可以看一下

    1.2K60

    C#——Nhibernate探索

    C#—Nhibernate探索 本篇文章,让我们一起来探索Nhibernate。 首先我们去搜索Nhibernate下载地址,如下链接所示。 该版本可能是最新版,我下载的4.0.4.GA。...nhibernate-configuration.xsd和nhibernate-mapping.xsd两个文件暂时不知道要干什么用的。...且nhibernate-configuration.xsd和nhibernate-mapping.xsd是要放到c盘的,路径如下: C:\Program Files (x86)\Microsoft Visual...虽然感觉,这俩文件好像不是这么用的,但由于可以判断它们并不影响程序运行,所以,先且不管他们,等程序运行起来后,再删除他们试试。 再之后,我上网调查了下Nhibernate的应用。...为什么说是探索之旅呢,因为,我也是首次配置Nhibernate,我平常更多的是使用Entity Framework。 文中使用了一些推断,猜测的词语。那是因为,真的是在推断的。

    50330

    JPA(hibernate)一对多根据多的一方某属性进行过滤查询

    我们经常会碰上某个字段是集合元素(List,Set)的情况,并且我们要过滤出集合中包含某个或某些元素的数据。...请注意,我定义User类时,注解写的是:@ElementCollection,映射的是基本类型不是一个javaBean类,所以无法使用表关联的写法如user.address.id=XXX,这样的hibernate...,它和one-to-many类似,但不是同一个东西,one-to-many注解的另一方也要是一个表,不能只是一个普通的基本类型的集合。...@Embeddable代表是一个嵌入式的对象,不是一个表映射对象。如果你用的是one-to-many,那么Address就需要加上@Entity,代表需要映射到数据库表。...one to many来映射的1对多表关系,同样可以使用上面的方法,写法也完全相同。

    4.7K31

    Fluent NHibernate之旅

    这是官方的说明,大体的话也就是用编程的方式进行配置,让你能更好的理解,不需要编写复杂的映射文件,它能完全替换NHibernate的映射文件,让你在映射的时候能使用C#的强类型方式。...在NHibernate中,ISession是操作数据的核心,我们需要通过SessionFactory来建造ISession来进行数据的交互。...当然不,Fluent的开发者不仅帮你保留了原有的方式,还可以混合你的配置文件,最有意思的时,你还可以使用它来学习NHibernate,甚至可以使用它来开发你自己的自动代码生成工具,因为我也刚学,先介绍一些简单的...使用NHibernate的配置      也就是你可以按照原先的方式进行配置,而读取呢使用Fluent来读取,然后创建SessionFactory,或许你感觉这不是多余了嘛,那是因为还没有讲到Mapping...文章写得很烂,也当是笔记吧,NHibernate也是刚刚学,惭愧惭愧,学的不是很彻底,今后也会结合NHibernate的学习一起来说。

    1.1K60

    Fluent NHibernate之旅(三)-- 继承

    经过了“开篇”和“简单映射”两篇文章,相信大家对Fluent NHibernate 有了一定的了解了,FluentNHibernate实际就是对 NHibernate 映射的一定扩展,我们能完全利用强类型...从这一篇开始,我们将使用Fluent NHibernate RC 1.0 版来进行演示,先前的代码,我会另外进行说明 继承 在OOP中,继承作为OO中重要的特性,如果NHibernate没有对它的支持,...,好的做法是把子类映射区分开来,等一下你会知道,第一种策略和第二种策略都会采用这样的方式来进行映射,至于映射会使用subclass还好是join-subclass,FluentNHibernate会自动生成的...这种方式表结构清晰,而且不会有亢余字段,同时方便扩展,是不错的选择,不过这不是说其他方式没有用,要看你的使用场景。看表结构: ? 这里注意的是,子表的主键不是递增的(废话,呵呵)。...总结 这次说了一下继承的映射方式,其实很早就写好了,正好遇到Fluent NHibernate发布了RC版,所以用了一些时间去学习了下,总的来说,这次升级呢非常好,可能会存在更多的bug,但不影响我们的正常使用

    70180

    NHibernate教程

    一、NHibernate简介 在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦、浪费时间的。NHibernate是一个面向.Net环境的对象/关系数据库映射工具。...NHibernate除了能将一张表映射为一个对象,还可以将表间关系变为对象的属性。例如学生和课程间的多对多关系就可以转化为学生类中的一个课程集合的属性。...由此可见,NHibernate不仅仅管理.Net类到数据库表的映射,还提供数据查询和获取数据的方法。因此采用NHibernate,可以大幅度减少开发时人工使用SQL处理数据的时间。...NHibernate知道如何完成ORM映射的XML文件; 5.使用NHibernate的API来编程 三、NHibernate的使用 1....两种方法要添加的配置信息是一样的,目标都是告诉NHbiernate使用什么样的数据库,使用哪个库,用户密码分别是什么。

    38810

    【框架】多表操作与缓存技术

    在Hibernate映射中,在院系表中添加一个集合属性,集合属性存放该院系下的学生。 学生表中将院系编号字段映射成一个院系类对象。 这样通过院系类对象的属性集合找到该院系下的所有学生。...在院系对象中建立学生对象的集合。...比如说院系表和学生表之间是一对多关系,使用cascade, 如删除院系表中的一条院系记录时,该院系下的所有学生记录也自动删除。这种现象称为级联删除。...比如:现在有新的学生要进入某一个班级(班级号t001),可以编写如下的代码来完成该功能。...缓存的设计就是为了通过存储已经从数据库读取的数据来减少应用程序和数据库之间的数据流量,而数据库的访问只在检索的数据不在当前缓存的时候才需要。

    48210

    NHibernate详解

    不是必要的.它可以使用public, protected, internal或者甚至是用private来持久化数据。...第三步:写映射文件 现在我们有数据表和需要去映射它的.Net类。我们需要一种方式去让NHibernate知道如何从一个映射到另一个。这个任务依赖于映射文件来完成。...如果你执意要NHiberante为你生成主键,你感兴趣于设定uuid.hex和uuid.string(从文档中获取更多信息) 提示:如果你使用Visual Studio.Net 去编译的话,请将user.hbm.xml...映射文件将成为装配件的一部分。更详细的细节重点将在后面展示。 提示:如果你仅仅是改变映射文件,你不能使用build 而应该Rebuild项目。...那里有一堆属性你需要调整来确定如何让NHibernate来访问数据库。再次说明,你可以在文档里获取更多信息。 NHibernate使用log4net来记录内部发生的一切。

    71030

    NHibernate介绍「建议收藏」

    现代化大型项目通常使用独立的数据库来存储数据,其中以采用关系型数据库居多。...C#可用以解决对象/关系数据库映射的工具有多种,常见的有EF (Entity Framework)、NHibernate、iBATIS等,各自的优缺点及适用场景在此不做讨论,本文只对如何使用NHibernate...创建数据模型 NHibernate允许直接使用Plain Old CLR Objects (POCOs),而不用通过存储过程来直接和数据库交互。使用POCOs的一个优势在于不用绑定特定的持久化层。...创建NHibernate映射文件 Nhibernate使用XML映射文件来映射POCO到数据库对象。虽然在很多案例中这可能是一对一关系,但这并不是必定的。...id元素告诉NHibernate哪个数据库的字段和对应的对象作为一个唯一键来使用。在本例中,我们使用Id这个字段。 generator元素告诉NHibernate怎样给新实体来创建唯一ID。

    76220

    NHibernate总结

    NHibernate不仅仅管理.NET 类到数据库表的映射(包括.NET 数据类型到SQL 数据类型的映射),还提供数据查询和获取数据的方法,大幅度减少我们开发时人工使用SQL和ADO.NET处理数据的时间...开始使用NHibernate 我们亲自动手,一步一步实现一个NHibernate简单程序来,我只实现了简单的增删改查功能。...,其中People实体类中的字段要设置为virtual。每个文件的详细代码在下面介绍 (2)     在NH.Data层引用Nhibernate相关的DLL ?...这正是NHibernate映射文件发挥作用的地方。映射文件包含了对象/关系映射所需的元数据。元数据包含持久化类的声明和属性到数据库的映射。...映射文件告诉NHibernate它应该访问数据库里面的哪个表及使用表里面的哪些字段。 <?xml version="1.0" encoding="utf-8" ?

    94040

    连贯NHibernate 1.0正式发布

    连贯NHibernate(Fluent NHibernate) 是通过编程方式而不是使用XML配置文件创建NHibernate映射的API。...它的目标是在项目中运用NHibernate时减少所遇到的困难,提供更好的可读性、可测试性和编译时的安全性。...连贯NHibernate降低了复杂性,并进一步加强了约定胜于配置的原则,即任何一个映射的最常用设置是默认的。 除了编译时的检查外连贯NHibernate还为你的映射的测试提供了一个健壮的API。...Wiki上有教程告诉怎么用,园子里的inday的几篇文章可以先看一下: [原创]Fluent NHibernate之旅 [原创]Fluent NHibernate之旅二--Entity Mapping...[原创]Fluent NHibernate之旅(三)—继承 codeproject上也有一篇针对RC的文章:Fluent NHibernate and Linq2NHibernate – Demo Project

    65070

    Fluent NHibernate之旅(四)-- 关系(中)

    在数据库设计中,我们最多打交道的,要算一对多关系了,延续我们的示例,我们来讲解一下一对多的关系。...Fluent NHibernate之旅系列导航: 一、开篇:ISessionFactory Configuration 二、实体映射:Entity Mapping 三、继承映射:Inheritence...映射 不得不赞叹一下 Fluent Nhibernate ,有了它,我们的映射一切都变得如此简单,先来看看Model吧,用户的订单列表,对于用户来说,暂时是不需要排序的,所以我们可以使用ISet作为Order...一对多的映射,比起一对一来说还相对的简单点,默认是延迟加载,如果项目中,有些地方,需要立即加载,我们也可以使用 FetchMode.Eager 来加载。...如果您在使用Fluent Nhibernate的时候也遇到了问题,可以及时与我联系或求助于Fluent 的Google Groups。 应“亦续缘”的要求,我把代码整理了下,发上来,便于大家学习。

    735100
    领券