2011-12-03 9 views
3

Contexte:MongoDB et Morphia - id Traditionnelle (Long) au lieu de ObjectId

Mon projet de service REST a été démarré en utilisant Hibernate. J'utilise id (Long) dans la classe de domaine en tant que partie de l'identifiant dans l'URL de repos, par exemple:

http://abc.com/customer-50, où 50 est l'identifiant long.

La classe Hibernate annotés est comme ci-dessous:

public class Customer { 
@Id 
@GeneratedValue 
private Long id; 
} 

Maintenant je dois migrer notre conception à MongoDB. Le choix naturel est d'utiliser Morphia, qui est un cadre d'entité.

Problème: Dans Morphia, le champ id est ObjectId

@Id private ObjectId id; 

Cela entraînera problème parce que: 1. Il n'est pas auto-augmentation, à savoir http://abc.com/customer-50, http://abc.com/customer-51, http://abc.com/customer-52.

Maintenant, il devient http://abc.com/customer-4d1b4687a6d5437619000000

  1. je vais devoir changer toutes les classes de référence de temps à objectId.

  2. Est-il possible de conserver la conception d'origine (qui utilise Long id, au lieu de ObjectId)?

Merci!

+1

MongoDB a des séquences: http://www.mongodb.org/display/DOCS/Object+IDs#ObjectIDs-SequenceNumbers –

+1

Un problème avec l'utilisation de cette méthode est que vous aurez besoin d'un aller-retour supplémentaire sur le serveur chaque fois que vous avez besoin de créer une nouvelle entité. Cela aura un impact sur la concurrence et le débit de votre système. Cela peut être perceptible, mais il y a un coût ... gardez cela à l'esprit. –

Répondre

Questions connexes