【发布时间】:2011-12-03 04:39:53
【问题描述】:
背景:
我的 REST 服务项目是使用 Hibernate 启动的。我在域类中使用 id (Long) 作为其余 url 中标识符的一部分,例如:
http://abc.com/customer-50,其中 50 是 Long id。
Hibernate Annotated 类如下:
public class Customer {
@Id
@GeneratedValue
private Long id;
}
现在我需要将我们的设计迁移到 Mongodb。自然的选择是使用 Morphia,它是一个实体框架。
问题: 在 Morphia 中,id 字段为 ObjectId
@Id private ObjectId id;
这将导致问题,因为: 1. 不是自增,即http://abc.com/customer-50,http://abc.com/customer-51,http://abc.com/customer-52。
现在变成http://abc.com/customer-4d1b4687a6d5437619000000
我需要将所有引用类从 long 更改为 objectId。
是否可以保留原始设计(使用 Long id,而不是 ObjectId)?
谢谢!
【问题讨论】:
-
使用此方法的一个问题是,每当您需要创建新实体时,都需要额外往返服务器。它将影响系统的并发性和吞吐量。这可能很明显,但这是有代价的……请记住这一点。