Questions tagged «orm»

对象关系映射(ORM)是一种用于将面向对象的系统映射到关系数据库的技术。使用其他标签指示编程语言([java],[sql],[python]),数据库系统([postgreSQL],内容管理系统([django]),框架([flask],[spring],[laravel) ]),应用程序环境([android],[node.js])和其他可用于搜索并具有观察者的标签。


11
Hibernate vs JPA vs JDO-各自的优缺点?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 改善这个问题 我对ORM这个概念很熟悉,几年前甚至在n.ibernate项目中使用nHibernate。但是,我没有跟上Java中ORM的话题,也没有机会使用任何这些工具。 但是,现在我可能有机会开始对我们的一个应用程序使用一些ORM工具,以尝试摆脱一系列旧式Web服务。 我很难说出JPA规范之间的区别,您从Hibernate库本身获得的东西以及JDO必须提供的东西。 因此,我知道这个问题有点开放性,但是我希望就以下问题得到一些意见: 各自的优缺点是什么? 您对新项目有何建议? 在使用一个框架与另一个框架时是否存在某些条件?
174 java  hibernate  orm  jpa  jdo 

19
教义-如何打印出真正的sql,而不仅仅是准备好的语句?
我们正在使用PHP ORM Doctrine。我正在创建这样的查询: $q = Doctrine_Query::create()->select('id')->from('MyTable'); 然后在函数中添加各种where子句和适当的东西,像这样 $q->where('normalisedname = ? OR name = ?', array($string, $originalString)); 稍后,在execute()为该查询对象添加对象之前,我想打印出原始SQL以便对其进行检查,并执行以下操作: $q->getSQLQuery(); 但是,这只会打印出准备好的语句,而不是完整的查询。我想查看它发送给MySQL的内容,但是它正在打印出一条准备好的语句,包括?。有什么办法可以查看“完整”查询吗?

12
如何在JPA中持久保存List <String>类型的属性?
获取具有持久性类型List的实体的最聪明方法是什么? Command.java package persistlistofstring; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.persistence.Basic; import javax.persistence.Entity; import javax.persistence.EntityManager; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Persistence; @Entity public class Command implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) Long id; @Basic List&lt;String&gt; arguments = new ArrayList&lt;String&gt;(); public static void main(String[] args) { Command …
158 java  orm  jpa 

5
ORM和ODM有什么区别?
据我了解的概念,我试图弄清楚ORM和ODM之间的区别是什么,ORM(对象关系映射器)映射数据之间的关系,而ODM(对象文档映射器)处理文档。我假设mySQL是ORM的一个示例,而MongoDB是ODM的一个示例,我是否正确? 正如您确定的那样,我对这个概念的理论不太熟悉。有人可以澄清一下两者之间的区别吗?
157 database  orm  odm 

14
JPA实体何时以及为何应实现Serializable接口?
问题在标题中。下面我仅描述了我的一些想法和发现。 当我有一个非常简单的域模型(3个表没有任何关系)时,我所有的实体都没有实现Serializable。 但是,当域模型变得更加复杂时,我遇到了RuntimeException,它表示我的一个实体没有实现Serializable。 我使用Hibernate作为JPA实现。 我想知道: 它是特定于供应商的要求/行为吗? 我的可序列化实体会怎样?它们应该可序列化以存储或传输吗? 在什么时候有必要使我的实体可序列化?


6
LINQ To Entities无法识别方法Last。真?
在此查询中: public static IEnumerable&lt;IServerOnlineCharacter&gt; GetUpdated() { var context = DataContext.GetDataContext(); return context.ServerOnlineCharacters .OrderBy(p =&gt; p.ServerStatus.ServerDateTime) .GroupBy(p =&gt; p.RawName) .Select(p =&gt; p.Last()); } 我必须将其切换为此才能工作 public static IEnumerable&lt;IServerOnlineCharacter&gt; GetUpdated() { var context = DataContext.GetDataContext(); return context.ServerOnlineCharacters .OrderByDescending(p =&gt; p.ServerStatus.ServerDateTime) .GroupBy(p =&gt; p.RawName) .Select(p =&gt; p.FirstOrDefault()); } 我什p.First()至无法使用来镜像第一个查询。 为什么在其他功能如此强大的ORM系统中存在这些基本限制?
144 c#  entity-framework  orm 

3
JPA和Spring Data JPA有什么区别?
我对Spring Data-JPA和JPA之间的区别感到困惑。我了解JPA,它是使用流行的ORM技术将Java对象持久保存到关系数据库的规范。 换句话说,JPA提供接口和其他ORM技术,实现那些称为JPA提供程序的接口,例如Hibernate。 现在,Spring Data JPA到底是什么? Spring Data JPA是否在JPA之上添加了更多功能(接口),并且仍然仅被指定还是JPA提供者? 我看到Spring Data JPA围绕存储库工作(DAO层:如果我没记错的话)。因此,我的意思是,使用“ Spring Data JPA + Hibernate”或仅使用“ Hibernate”定向有何不同?

1
在此Django应用程序教程中,choice_set是什么?
Django教程中的这一行,编写您的第一个Django应用,第1部分: p.choice_set.create(choice='Not much', votes=0) 它是如何choice_set存在的?它是什么? 我想这choice部分是Choice本教程中使用的模型的小写版本,但是什么是choice_set?你能详细说明吗? 更新:根据Ben的回答,我找到了此文档:遵循“向后”关系。
144 python  django  orm 

8
一对多,多对一和多对多的区别?
好的,所以这可能是一个琐碎的问题,但是我在可视化和理解差异以及何时使用它们方面遇到困难。对于诸如单向和双向映射之类的概念如何影响一对多/多对多关系,我也还不清楚。我现在正在使用Hibernate,因此任何与ORM相关的解释都将有所帮助。 举例来说,我有以下设置: public class Person{ private Long personId; private Set&lt;Skill&gt; skills; //Getters and setters } public class Skill{ private Long skillId; private String skillName; //Getters and setters } 那么在这种情况下,我将进行哪种映射?对于这个特定示例的答案肯定会受到赞赏,但我也确实希望获得何时使用一对多和多对多以及何时使用联接表与联接列以及单向与双向的概述。

2
实体框架.Remove()与.DeleteObject()
您可以通过以下两种方法使用EF从数据库中删除项目。 EntityCollection.Remove方法 ObjectContext.DeleteObject方法 第一个在上EntityCollection,第二个在上ObjectContext。 什么时候应该使用? 一个人比另一个人偏爱吗? Remove()返回a bool并DeleteObject()返回void。

30
为什么我们需要实体对象?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 改善这个问题 我确实需要就当前接受的企业应用程序设计范例的优点进行一些诚实,周到的辩论。 我不认为实体对象应该存在。 实体对象是指我们倾向于为应用程序构建的典型事物,例如“人”,“帐户”,“订单”等。 我当前的设计理念是: 所有数据库访问都必须通过存储过程来完成。 每当需要数据时,调用存储过程并遍历SqlDataReader或DataTable中的行 (注意:我还使用Java EE构建了企业应用程序,Java人士请用等价的.NET示例代替) 我不是反OO。我为不同目的编写了很多类,而不仅仅是实体。我将承认我编写的大部分类都是静态帮助器类。 我不是在造玩具。我说的是跨多台机器部署的大批量交易应用程序。Web应用程序,Windows服务,Web服务,B2B交互,您可以为其命名。 我曾经使用过OR Mappers。我写了一些。我已经使用了Java EE堆栈,CSLA和其他一些等效项。我不仅使用了它们,而且还在生产环境中积极开发和维护了这些应用程序。 我已经走到了实战检验的结论,即实体对象在我们的方式取得,和我们的生活会如此没有他们容易得多。 考虑一个简单的示例:您会收到有关应用程序中某个页面无法正常工作的支持电话,可能其中一个字段没有得到应有的保留。使用我的模型,分配来查找问题的开发人员仅打开了3个文件。一个带有存储过程的ASPX,ASPX.CS和SQL文件。该问题可能是存储过程调用中缺少的参数,需要几分钟才能解决。但是对于任何实体模型,您将始终启动调试器,开始逐步执​​行代码,最终可能会在Visual Studio中打开15-20个文件。到栈底时,您已经忘记了从哪里开始。我们一次只能记住这么多事情。无需添加任何不必要的层,软件非常复杂。 开发的复杂性和故障排除只是我苦恼的一方面。 现在让我们谈谈可伸缩性。 开发人员是否意识到他们每次编写或修改与数据库交互的任何代码时都需要对对数据库的确切影响进行彻底的分析?不仅仅是开发副本,我的意思是模仿生产,因此您可以看到,您对象现在需要的附加列使当前查询计划无效,并且在1秒内运行的报告现在将需要2分钟,因为您在选择列表中添加了单列?事实证明,您现在需要的索引是如此之大,以至于DBA不得不修改文件的物理布局? 如果您通过抽象让人们离物理数据存储区太远,他们将对需要扩展的应用程序造成破坏。 我不是狂热者。我可以确信,如果我错了,也许我错了,因为对Linq到SQL,ADO.NET EF,Hibernate,Java EE等的大力推动。请仔细考虑您的回答,如果我遗漏了一些我我真的很想知道它是什么,以及为什么我应该改变自己的想法。 [编辑] 看来这个问题突然又活跃起来了,所以现在有了新的评论功能,我已经直接对几个答案发表了评论。感谢您的答复,我认为这是一个健康的讨论。 我可能在讲企业应用程序时应该更加清楚。例如,我真的无法评论在某人的台式机或移动应用程序上运行的游戏。 对于几个相似的答案,我不得不在顶部提出一件事:正交性和关注点分离经常被引用为采用实体/ ORM的原因。对我而言,存储过程是我能想到的分离关注点的最佳示例。如果不允许除通过存储过程之外的所有其他对数据库的访问,则只要您维护存储过程的输入和输出,理论上就可以重新设计整个数据模型并且不破坏任何代码。它们是按合同编程的完美示例(只要您避免“选择*”并记录结果集)。 问一个已经从事该行业很长时间并且使用了长期应用程序的人:在数据库运行期间,有多少个应用程序和UI层来去去了?当有4到5个不同的持久层生成SQL来获取数据时,调整和重构数据库有多难?你什么都不能改变!ORM或生成SQL的任何代码将您的数据库牢牢锁定。
139 sql  database  orm  entities 


18
如何在laravel雄辩中选择特定的列
可以说我表中有7列,而我只想选择其中的两列,就像这样 SELECT `name`,`surname` FROM `table` WHERE `id` = '1'; 在laravel雄辩的模型中,它可能看起来像这样 Table::where('id', 1)-&gt;get(); 但是我想这个表达式会选择id等于1的所有列,而我只需要两列(名称,姓氏)。如何只选择两列?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.