Tag: orm

@GeneratedValue和@GenericGenerator之间的区别

有时候,我发现他们在一起,有时候是孤单的,有时他们似乎也是这样。 有什么不同? 这里有三个例子。 他们做什么不同? 为什么我不能仅仅使用@GeneratedValue呢? 例1 @Id @GeneratedValue(generator="increment") @GenericGenerator(name="increment", strategy = "increment") Long id; 例2 @Id @GeneratedValue(strategy=GenerationType.SEQUENCE) private int userId; 例3 @ElementCollection @JoinTable(name="Address", joinColumns=@JoinColumn(name="user_id") ) @GenericGenerator(name="hilo-gen", strategy="hilo") @CollectionId(columns = @Column(name="Address_id"), generator = "hilo-gen", type = @Type(type="long")) Collection<Addr> listOfAddresses = new ArrayList<Addr>();

学说2从实体更新

是否有可能以类似于以下方式更新实体: $data = new ATest(); // my entity $data->id = 1; // id 1 already exists, I just want to update this row $data->name = "ORM Tested"; // changed the name $entityManager->persist($data); $entityManager->flush(); 这将插入和更改对象的id,而不是更新数据库中的现有行。

SQLAlchemy─将一个类映射到多个表

# ! /usr/bin/env python # -*- coding: utf-8 -*- # login_frontend.py """ Python 2.7.3 Cherrypy 3.2.2 PostgreSQL 9.1 psycopy2 2.4.5 SQLAlchemy 0.7.10 """ 我在join一个Python / SQLAlchemy类中的四个表时遇到问题。 我试着这样做,所以我可以遍历这个类的实例,而不是通过ORM连接表获得的名称元组。 为什么这一切? 因为我已经开始这么做了,所以我走得太远了,放弃了。 另外,它必须是可能的,所以我想知道它是如何完成的。 对于这个项目(cherrypy web-frontend),我得到了一个已经完成的表类的模块。 我把它移到了这篇文章的底部,因为也许这对你来说甚至是不必要的。 以下仅是联合多表类尝试的一个示例。 我选了一个不止两个表格和一个联结表的简单情况。 在这里,我不写入这些连接的表,但它是必要的其他地方。 这就是为什么课程将是这个问题的一个很好的解决scheme。 我的一个联合class的尝试, 这是给定的表类模块和这两个网站的例子的组合: – 将一个类映射到多个表 – SQLAlchemy:一个类 – 两个表 class JoinUserGroupPerson (Base): persons = md.tables['persons'] users = md.tables['users'] user_groups […]

为什么复合键在hibernate时不鼓励?

这是从Hibernate官方教程 : 有一个替代的<composite-id>声明允许用复合键访问遗留数据。 它的用途是强烈的劝阻别的。 为什么复合键不鼓励? 我正在考虑使用3列表,其中所有的列都是外键,并在我的模型中一起形成一个有意义的关系的主键。 我不明白为什么这是一个不好的主意,我很明显会对他们使用索引。 有什么select? 创build一个额外的自动生成的列,并将其用作主键? 反正我仍然需要查询我的3列! 总之,为什么这个陈述是真实的? 还有什么更好的select?

CodeIgniter,模型和ORM,如何处理这个?

我从CodeIgniter开始,经过几个小时的谷歌潜水,我有点困惑。 让我们试着用一个简单的例子来解释我的问题:我有一个'名字'和'颜色'字段的表'汽车'。 因此,我想要一个PHP类的汽车,以便我的代码可以看起来像这样: $car = new Car('BMW', 'red'); //new $car Object $car->save(); //this will make an SQL insert to the table 'car' //Lets query all cars $cars = Car::get_all(); //cars will be an array of Car objects, (not a set of rows!) 因此,我正在寻找与RubyOnRails或Django(Python)中的东西非常相似的东西。 我需要处理所有types的关系,并能够以真正的OOP + MVC方式编写代码。 这些是我的失败方法来得到它: 使用外部ORM (DataMapper,Doctrine,AcidCrud …) 他们要么需要太多的设置,要么处理好关系。 使用CodeIgniter类 (扩展CodeIgniter的Model类) class Car […]

Code-First或Database-首先,如何select?

让我们假设我们要开始一个新的项目 – 应用程序,其中包含一些业务逻辑,在ASP.NET,WPF或两者的用户界面。 我们希望使用ORM或DAL代码生成器,并在.NET类中实现我们的业务逻辑。 我们如何expression我们的业务领域的想法有几个基本的方法: 在.NET上实现业务类并让ORM生成适当的数据库模式 手动创build数据库模式并通过代码生成器生成.NET类 使用某种可视化devise器,可以生成业务类和数据库结构或脚本 你喜欢写什么:“创build表人(…)”或“公共类人{…}”? 这些方式的优点和缺点是什么? 也许有一些特殊的情况,一种方式比另一种更好? 如何select最佳的方式在一个特定的项目? 我对“先行代码”(或“模式优先”)方式非常熟悉,但似乎大部分ORM被devise为代码生成器或映射器,假设我将手动实现数据库结构和业务类。 基于ORM的expirience和例子的答案是特别受欢迎的。 编辑:请注意,问题不是“我应该先做什么,当开始新的项目?”,但是“应该手动声明/自动生成,域类或数据库结构?

最新的Dapper VS Entity Framework 6的性能考虑

Dapper之间有一些性能比较(似乎是最快,最受欢迎的“微型ORM工具”)。 现在是2014年9月,我们有Entity Framework 6(不是5或者4),而且Dapper还在。 我们将开始开发一个庞大的数据库n层应用程序(数据库有700个表)。 还有一些需要运行的查询是相当时间敏感的。 有没有人有任何关于EF 6.1.x的性能更新? 这涉及在DbContext中进行的一般查询。 我想我不能用Dapper使用格式良好的LINQ查询。 你有这方面的经验吗? 是否值得失去LINQ的额外速度? 小巧玲珑还在积极,不断发展吗? GitHub告诉我是的,但是与Subsonic一样,它可以相当快地改变。 把Dapper和EF混合起来是可行的还是可行的? 当我们需要速度时,小巧玲珑,否则EF。 谢谢!

如何限制Django查询返回的列?

这似乎很简单,但所有的Django查询似乎是“SELECT *” 如何构build只返回字段子集的查询?

当插入一个实体的关联,有没有办法只是使用FK而不是检索实体?

我需要插入一个有关联的实体。 如果我已经有关联实体的FK,有没有办法将主要实体插入数据库只有FK的填充? 或者我总是不得不这样做 通过FK检索相关的实体, 根据关联填充主实体的属性, 然后调用persist方法。

我发现JPA,或类似的,不鼓励DAO模式

我发现JPA,或类似的,不鼓励DAO模式。 我不知道,但我觉得这样,尤其是服务器pipe理的JTA经理。 经过充分的动手使用DAO模式,我开始围绕这种模式devise基于JPA的应用程序。 但它不适合,国际海事组织。 我倾向于失去相当JPA和所有function。 那么,假设你用一个悲观的locking激发了一个查询,并且从DAO方法返回了一个entite列表。 返回时,事务结束并locking消失(服务器pipe理的JTApipe理器的情况)。 所以,没有意义,松散地说。 但是有一些有效的例子。 另一个例子是更微不足道的。 假设你启动了一个查询来获得一个实体,它与其他实体有一个延迟的加载一对多的关联。 在返回DAO方法后,事务结束。 延迟加载不会工作了,你只是得到null或什么的。 为了应付这个问题,我们手工加载它。 我们做一些像a.getBList().size() 。 因此,IMO最好不要专门制作一个DAO,并且在你的商业bean中这样做,这样你就可以利用这些有用的特性。 或者ORM API可以被认为是一个DAO /数据层本身。 所以,我们不需要再做一个。 你们都在想什么? 注:我绝对不会说DAO模式已经过时。 事实上,这取决于情况。