问题标签 [orm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
28673 浏览

java - 为什么@OneToMany 不适用于 Hibernate 中的继承

我认为很清楚我要做什么。我希望 @ManyToOne 人被 UglyProblem 类继承。但是会有一个例外说:“在 UglyProblem 类中没有找到这样的属性 (mappedBy="person")”。

我发现的只有这个。我找不到 Emmanuel Bernard 的帖子,解释了这背后的原因。


不幸的是,根据 Hibernate 文档“未映射为 @MappedSuperclass 的超类的属性将被忽略。”

那么我认为这意味着如果我有这两个类:

那么字段foo将不会映射到 B 类。这是有道理的。但如果我有这样的事情:

我希望 UglyProblem 类有文件idname并且两个类都使用同一个表进行映射。(事实上​​,这正是发生的事情,我刚刚再次检查)。我有这张桌子:

回到我的问题:

我希望 @ManyToOne 人被 UglyProblem 类继承。

我希望这是因为所有其他映射字段都是继承的,并且我认为没有任何理由为 ManyToOne 关系设置此例外。


是的,我看到了。事实上,我在我的案例中使用了只读解决方案。但我的问题是“为什么……” :)。我知道hibernate团队的成员给出了解释。我找不到它,这就是我问的原因。

我想找出这个设计决策的动机。

(如果你对我如何面对这个问题感兴趣:我继承了一个使用 hibernate 3 构建的项目。它是 Jboss 4.0。一些东西 + hibernate 已经存在(你可以一起下载)。我正在将此项目移动到 Jboss 4.2。 2,我发现有“@OneToMany mappedBy”的继承映射,它在旧设置上运行良好......)

0 投票
5 回答
3207 浏览

c# - 关于如何从域 (ORM) 对象映射到数据传输对象 (DTO) 的建议

我正在开发的当前系统利用 Castle Activerecord 在域对象和数据库之间提供 ORM(对象关系映射)。这一切都很好,而且大多数时候实际上效果很好!

问题来自于 Castle Activerecords 对异步执行的支持,更具体地说,是管理对象所属会话的 SessionScope。长话短说,坏事发生了!

因此,我们正在寻找一种方法来轻松地将域对象(他们知道数据库存在并关心)转换(自动思考)到 DTO 对象(他们对数据库一无所知,不关心会话、映射属性或所有事情)奥姆)。

有没有人有这样做的建议。首先,我正在寻找对象的基本一对一映射。域对象Person将被映射到说PersonDTO。我不想手动执行此操作,因为它是一种浪费。

很明显,我想到了反思,但我希望这个网站周围有一些更好的 IT 知识, 会建议“更酷” 。

哦,我在 C# 中工作,如前所述的 ORM 对象与 Castle ActiveRecord 映射。


示例代码:

根据@ajmastrean 的要求,我已经链接到一个我(严重)一起嘲笑的例子。该示例有一个捕获表单、捕获表单控制器对象、活动记录存储库和一个异步助手。它有点大(3MB),因为我包含了运行它所需的 ActiveRecored dll。您需要在本地计算机上创建一个名为ActiveRecordAsync的数据库,或者只需更改 .config 文件。

示例的基本细节:

捕获表格

捕获表单有对控制器的引用

在初始化表单时,它调用 MyController.Load() private void InitForm () { MyController = new CompanyCaptureController(this); MyController.Load(); 这将返回一个名为 LoadComplete() 的方法

这就是“坏事”发生的地方,因为我们正在使用设置为延迟加载的 Company 的子列表。

控制器

控制器有一个从表单调用的 Load 方法,然后它调用 Asyc 助手以异步调用 LoadCompany 方法,然后返回 Capture 表单的 LoadComplete 方法。

LoadCompany() 方法只是利用存储库来查找已知公司。

该示例的其余部分相当通用,它有两个继承自基类的域类、一个用于插入一些数据的设置文件和一个用于提供ActiveRecordMediator功能的存储库。

0 投票
5 回答
6895 浏览

nhibernate - 使用 NHibernate 进行查询的最佳实践

在使用其他技术( CSLASubsonic)几年后,我又开始使用 NHibernate ,我发现查询有点令人沮丧,尤其是与 Subsonic 相比。我想知道人们正在使用哪些其他方法?

Hibernate Query Language 对我来说感觉不对,似乎太像编写 SQL,在我看来这是使用 ORM 工具的原因之一,所以我不必这样做,而且它都是 XML,这意味着它是重构不好,错误只会在运行时发现?

标准查询,似乎不够流畅。

读过Ayende 的 NHibernate Query Generator是一个有用的工具,这是人们正在使用的吗?还有什么?

编辑:值得一读 http://www.ayende.com/Blog/archive/2007/03/17/Implementing-Linq-for-NHibernate-A-How-To-Guide--Part.aspx

0 投票
6 回答
1990 浏览

database - 哪个 ORM 框架可以最好地处理 MVCC 数据库设计?

在设计使用 MVCC(多版本并发控制)的数据库时,您创建的表具有像“IsLatest”这样的布尔字段或整数“VersionId”,并且您从不进行任何更新,您只在事情发生变化时插入新记录。

MVCC 为您提供了对需要详细历史记录的应用程序的自动审计,它还减轻了数据库在更新锁方面的压力。缺点是它会使您的数据大小更大并减慢选择速度,因为获得最新版本需要额外的子句。它还使外键更加复杂。

(请注意,我不是在谈论 RDBMS 中的本机 MVCC 支持,例如 SQL Server 的快照隔离级别)

这已在 Stack Overflow 上的其他帖子中讨论过。[待办事项-链接]

我想知道,哪些流行的实体/ORM 框架(Linq to Sql、ADO.NET EF、Hibernate 等)可以完全支持这种类型的设计?这是对典型 ActiveRecord 设计模式的重大更改,因此我不确定现有的大多数工具是否可以帮助那些决定使用他们的数据模型走这条路的人。我对如何处理外键特别感兴趣,因为我什至不确定对它们进行数据建模以支持 MVCC 的最佳方法。

0 投票
1 回答
534 浏览

c# - 在 LlblGenPro 中合并实体的标准方法

我从具有主键 A1 的实体 A 开始,它有子集合 B 和 C,但它们是空的,因为我没有预取它们。我现在得到一个新的 A(A prime),主键 A1 填充了子集合 B 和 C。

什么是让 A 和 A 素数成为同一个对象并填充 B 和 C 的 A 集合的好方法?

0 投票
13 回答
3643 浏览

sql - 为什么 NHibernate 生成参数化 SQL 的速度与存储过程一样快?

我的一位同事声称,即使执行路径被缓存,从 ORM 生成的参数化 SQL 也不可能像存储过程一样快。对这个顽固的开发人员有任何帮助吗?

0 投票
10 回答
1769 浏览

c# - ORM 的良好特性

我目前正在组装一个相当简单的 ORM 工具,作为客户各种 Web 项目的框架。大多数项目都是内部的,不需要大量的并发性,所有项目都会与 SQL Server 相背离。我建议他们使用像 SubSonic、NHibernate 和其他一些开源项目这样的 ORM 工具,但是出于可维护性和灵活性的原因,他们希望创建一些自定义的东西。所以我的问题是:我应该确保在这个 ORM 工具中包含哪些功能?顺便说一句,我将使用 MyGeneration 来生成代码模板。

0 投票
5 回答
210 浏览

orm - 如何处理在域模型中没有表示的查询?

这不是特定于任何语言的,它只是关于最佳实践。我正在使用 JPA/Hibernate(但它可以是任何其他 ORM 解决方案),我想知道你们如何处理这种情况:假设您有一个查询返回的东西没有由您的任何域类。您是否创建了一个特定的类来表示该特定查询?您是否在其他类型的对象(数组、地图...)中返回查询 其他解决方案?我想了解您的经验和最佳实践。

PS 实际上,我正在为特定查询创建特定的对象。

0 投票
6 回答
3156 浏览

c# - (N)Hibernate - 是否可以将多个表动态映射到一个类

我有这样的情况,我使用 GIS 软件,它将有关 GIS 对象的信息存储到每个类型/类别的 GIS 对象(道路、河流、建筑物、海洋……)的单独数据库表中,并保留它存储的元数据表有关类名及其 DB 表的信息。

这些不同类的GIS 对象共享一些参数,即Description 和ID。我想用一个通用的 C# 类(我们称之为 GisObject)来表示所有这些不同的 GIS 类,这足以满足我需要从应用程序的非 GIS 部分执行的操作,该应用程序列出了给定 GIS 的 GIS 对象班级。

对我来说,问题是如何使用 NHibernate 映射这些对象,以便在创建 C# GisObject 以接收和使用表名作为将从元表中读取的参数时向 NHibernate 解释(它可以分两个步骤,我可以在第一步中手动获取表名,然后在拉取 GisObject 数据时将其传递给 NHibernate)。

有没有人处理过这种情况,可以做到吗?

0 投票
12 回答
169341 浏览

python - 有哪些好的 Python ORM 解决方案?

我正在评估并考虑将 CherryPy 用于一个项目,该项目基本上是来自客户端(浏览器)的 JavaScript 前端,它与后端的 Python Web 服务通信。所以,我真的需要一些快速和轻量级的后端,我可以使用 Python 实现,然后通过 ORM(JSON 到浏览器)与 PostgreSQL DB 对话。

我也在看我喜欢的 Django,因为它的 ORM 是内置的。但是,我认为 Django 可能比我真正需要的要多一点(即比我真正需要的功能更多 == 更慢?)。

任何人都对不同的 Python ORM 解决方案有任何经验,可以比较和对比它们的特性和功能、速度、效率等吗?