问题标签 [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 投票
9 回答
16976 浏览

c# - Problem using SQLite :memory: with NHibernate

I use NHibernate for my dataacess, and for awhile not I've been using SQLite for local integration tests. I've been using a file, but I thought I would out the :memory: option. When I fire up any of the integration tests, the database seems to be created (NHibernate spits out the table creation sql) but interfacting with the database causes an error.

Has anyone every gotten NHibernate working with an in memory database? Is it even possible? The connection string I'm using is this:

0 投票
20 回答
41360 浏览

c# - 是否有充分的理由不使用 ORM?

在我的学徒期间,我将NHibernate用于一些较小的项目,这些项目主要是我自己编码和设计的。现在,在开始一些更大的项目之前,讨论了如何设计数据访问以及是否使用 ORM 层。由于我仍处于学徒阶段,并且仍然认为自己是企业编程的初学者,因此我并没有真正尝试提出自己的观点,即使用对象关系映射器到数据库可以大大简化开发。开发团队的其他编码人员比我更有经验,所以我想我会照他们说的做。:-)

但是,我不完全理解不使用 NHibernate 或类似项目的两个主要原因:

  1. 可以使用 SQL 查询构建自己的数据访问对象,然后将这些查询复制到 Microsoft SQL Server Management Studio 之外。
  2. 调试 ORM 可能很困难。

所以,当然我可以用很多SELECTs 等来构建我的数据访问层,但是在这里我错过了自动连接、延迟加载代理类以及如果表获得新列或列获得的维护工作量较低的优势重命名。(更新大量SELECT,INSERTUPDATE查询与更新映射配置并可能重构业务类和 DTO。)

此外,如果您不太了解该框架,使用 NHibernate 可能会遇到无法预料的问题。例如,这可能是信任 Table.hbm.xml,您在其中设置了要自动验证的字符串长度。但是,我也可以想象一个“简单”的基于 SqlConnection 查询的数据访问层中的类似错误。

最后,上面提到的那些论点真的是一个很好的理由不将 ORM 用于基于数据库的非平凡的企业应用程序吗?他们/我可能错过了其他论点吗?

(我可能应该补充一点,我认为这就像第一个需要团队合作的基于 .NET/C# 的“大型”应用程序。在 Stack Overflow 上被视为非常正常的良好实践,例如单元测试或持续集成,是非- 到现在为止。)

0 投票
2 回答
1941 浏览

php - Kohana PHP、ORM 和 MySQL BLOB

我正在尝试通过 Kohana 的 ORM 库在 MySQL 表中创建和检索 BLOB。

代码看起来像:

我已经通过将数据输出到文件来验证此时数据是否正常。但是,当我检索数据时,它会损坏。我已经设法进一步缩小范围 - 我使用 MySQL 查询工具来提取数据库中保存的数据,并且我可以验证数据库中的数据是否已损坏,因此问题一定出在 INSERT .

此外,输入的文件并不总是损坏 - 较小的文件(例如图像)往往没问题。

有人有想法么?

0 投票
4 回答
350 浏览

orm - 需要的意见:连接或断开域模型中的实体更好吗?

我正在开始一个新项目;我希望遵循 DDD 方法。我们已经与业务部门进行了交谈,并在某些细节(互联网电视)方面获得了对该领域的一些了解。

该团队五人强大且分布广泛。我们采用了存储库模式进行数据访问。我们总体上遵循基于服务的方法;服务负责执行操作,我们将通过 REST API 公开一些操作,一些通过我们自己的客户端应用程序公开。

没有使用 ORM 经验的人(目前我也没有大量经验)希望对实体之间没有关系的实体进行建模,其理由是这迫使使用存储库的开发人员准确地知道他们的影响正在数据库上。我想指出的是,这最终会导致一组非常健谈的服务、更多需要维护和测试的代码,以及一个根本没有抓住重点的领域模型。我认为这不是一个好方法,我与之交谈过的任何人也没有。

他们对实现这种方法的渴望是存储库外观下的 Linq2SQL。这需要第二个模型,它与域模型之间的映射类/层,以及存储库中的大量重复,因为编写通用存储库似乎是不可能的(我们目前已经看到)。也无法映射利用继承的 L2S 实体(这意味着每个实体都必须具有 created-on、created-by 等属性)

第一个问题: 谁能给我一些关于如何改变主意的建议?我正在编写一个使用 NHibernate 的副项目,它当然很好地支持 DDD 方法,基于“给我看代码”是一个强有力的论点。

第二个问题: 我应该尝试在我的 NHibernate 使用我自己的时间副项目中演示什么样的事情?我是新手;他们对 NHibernate 的厌恶之一是学习曲线和对 XML 的要求;我的反驳是它是一个强大的工具,而且 Fluent NHibernate 消除了对 XML 的需求。他们还是不喜欢。

0 投票
3 回答
541 浏览

java - 为 O/RM 系统(休眠)实现长期历史模式的最佳实践?

我已经使用 Hibernate 将几个 java 类(如 Customer、Assessment、Rating 等)映射到数据库。现在我正在考虑对持久数据的所有更改的历史模式。该应用程序是一个 Web 应用程序。在删除(或编辑)数据的情况下,另一个用户应该有可能看到更改并撤消它。由于更改超出了当前会话的范围,因此我不知道如何以命令模式之类的方式解决此问题,建议将其用于撤消功能。

对于单值编辑,类似这个问题的方法听起来不错。但是删除整个持久实体呢?最简单的方法是在该客户是否被删除时在表中创建一个标志。最复杂的方法是为存储已删除实体的每个类创建一个表。中间有什么吗?我怎样才能将这两个东西舒适地集成到 O/RM 系统(在我的情况下是 Hibernate)中,而不用过多地使用 SQL(由于可移植性我想避免)并且仍然具有足够的灵活性?

有最佳实践吗?

0 投票
13 回答
13752 浏览

.net - 与 .NET 2.0/3.5 一起使用的最佳免费 ORM 工具

我有兴趣在即将到来的项目中使用对象关系映射包。该项目将作为一个 ASP.NET 应用程序开始,但将具有最终将与 WinForms 应用程序共享的许多功能。任何人都可以推荐一些在 ASP.NET 和 WinForms 情况下都运行良好的免费 ORM 包吗?

0 投票
2 回答
325 浏览

.net - 具有 1000 多个表的数据库的 ORM

我正在为.NET 寻找一个可以处理超过 1000 个表和实体的可靠 ORM。你有什么建议?任何评论都将不胜感激,但那些来自实际处理过这一挑战的人的评论以及他们如何处理它的描述将更加感激。

0 投票
2 回答
1545 浏览

.net - NHibernate 自定义 SQL 对象创建

稍微简化的示例情况:我有实体 A 和 B,它们是令人难以置信的“重”域对象。从数据库中加载一个非常重要。然后我有一个实体 C,它是一个非常简单的对象,它有一个标签字符串、一个 A 和一个 B——都是惰性的。

我正在做一些低级查询来创建巨大的 C 列表,所以我确切地知道我需要为 CA 和 CB 保存哪些 ID,但我不想加载整个对象并将它们设置为属性,因为开销是疯狂的。

相反,我只想将 ID 直接插入到我的 C 实体中,然后仅在需要时才完全加载其上的 A 和 B 属性。

我在文档中看到了<sql-insert/>标签,但该部分真的很稀疏。

有什么方法可以在 NHibernate 框架内做我想做的事情,还是应该只做原始 SQL?如果可能的话,我试图保持数据库的可移植性,这让我回避了原始选项。似乎必须有一个更好的方法我错过了。

0 投票
4 回答
27070 浏览

java - 如何使用 Hibernate @Any 相关的注解?

有人可以向我解释任何相关的注释(@Any@AnyMetaDef和)在实践中是如何工作的@AnyMetaDefs@ManyToAny我很难找到关于这些的任何有用的文档(仅 JavaDoc 不是很有帮助)。

到目前为止,我已经收集到它们以某种方式能够引用抽象类和扩展类。如果是这种情况,为什么没有@OneToAny注释?这个“任何”是指一个“任何”还是多个“任何”?

一个简短、实用和说明性的例子将非常感激(不必编译)。

编辑:尽管我想接受答复作为答案并在适当的时候给予信用,但我发现 Smink 和 Sakana 的答案都提供了丰富的信息。因为我不能接受多个回复作为答案,所以很遗憾我将两者都标记为答案。

0 投票
1 回答
418 浏览

.net - ORM 对复合主键的支持

我读过复合主键会混淆典型的 ORM 代码生成器。哪些 ORM 最适合复合 PK,哪些应该避免?(我对 .NET 特别感兴趣)