MongoDB и Morphia — традиционный идентификатор (длинный) вместо ObjectId

Предыстория:

Мой сервисный проект REST был запущен с помощью Hibernate. Я использую id (Long) в классе домена как часть идентификатора в оставшемся URL-адресе, например:

http://abc.com/customer-50, где 50 — это длинный идентификатор.

Класс 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.

  1. Мне нужно будет изменить все эталонные классы с long на objectId.

  2. Можно ли сохранить исходный дизайн (в котором вместо ObjectId используется длинный идентификатор)?

Спасибо!


person janetsmith    schedule 03.12.2011    source источник
comment
В MongoDB есть последовательности: mongodb.org/display/DOCS/Object+IDs# ObjectID-SequenceNumbers   -  person mu is too short    schedule 03.12.2011
comment
Одна из проблем с использованием этого метода заключается в том, что вам потребуется дополнительный обратный путь к серверу всякий раз, когда вам нужно создать новую сущность. Это повлияет на параллелизм и пропускную способность вашей системы. Это может быть заметно, но есть цена... просто имейте это в виду.   -  person Scott Hernandez    schedule 11.12.2011


Ответы (1)


Взгляните на https://code.google.com/p/morphia/source/browse/trunk/morphia/src/main/java/com/google/code/morphia/utils/LongIdEntity.java https://github.com/mongodb/morphia/blob/master/morphia/src/test/java/org/mongodb/morphia/utils/LongIdEntity.java (ссылка обновлена) https://github.com/MorphiaOrg/morphia/blob/master/morphia/src/test/java/xyz/morphia/utils/LongIdEntity.java (снова обновлено)

person xeraa    schedule 03.12.2011
comment
Ссылка больше не действительна - person Mauro Midolo; 07.09.2017
comment
Ссылка в очередной раз недействительна. - person Todd Sharp; 20.11.2018
comment
Спасибо! Я обновил его снова. Это также может рассказать немного о стабильности Morphia... - person xeraa; 21.11.2018