Вопрос

Я ищу ресурсы, показывающие, как интегрировать MongoDB с Hibernate (предпочтительно из spring), чтобы я мог переключаться между СУБД и альтернативой NoSQL:есть ли у кого-нибудь опыт в этом?

Это было полезно?

Решение

Тебе нелегко это сделать.Смысл Hibernate заключается в сопоставлении объектов Java с реляционной базой данных.Хотя Hibernate абстрагирует много деталей, вам все равно нужно понимать, как реляционные базы данных работают с такими вещами, как внешние и первичные ключи, и влияние выполняемых вами запросов на производительность.MongoDB требует совершенно другого способа проектирования вашей базы данных, ориентированного на объекты, а не на столбцы и таблицы.хотя вы можете создать диалект гибернации для MongoDB, создание дизайна, который будет работать как с реляционной базой данных, так и с базой данных NoSQL, даст вам дизайн, который плохо работает с обоими.

Другие советы

О чем Спящий режим OGM?Он обеспечивает JPA для Нет-SQL базы данных.

Миграция была бы проще, если бы вы использовали Spring MongoTemplate (аналогично HibernateTemplate).
Среди его особенностей - поддержка аннотаций JPA (хотя я не уверен, в какой степени).
Показать еще: http://www.springsource.org/spring-data/mongodb

Вам понадобится следующее:

  1. Добавьте spring-data-mongodb JAR в свой проект (доступен в maven центральный).
  2. Добавьте mongo-java-driver JAR в свой проект (доступно в maven central).
  3. Используйте предоставленный класс MongoTemplate аналогично способу HibernateTemplate.Например.:mongoTemplate.findById(id, MyClass.class);
    mongoTemplate.insert(myObject);

Вот конкретный пример с кодом: используйте-spring-and-hibernate-с-mongodb

Есть хорошая работа, проделанная ранее, поскольку:

обратитесь к этим ссылкам.это будет полезно для вас.

Существует также кундера, который использует JPA-аннотации для чтения / записи вашего объекта из / в mongodb.Если вы знакомы с hibernate, он должен быть довольно простым в использовании.

Недавно я попробовал Морфий, который использует тот же подход, но со своими собственными аннотациями.Это работает нормально

Если вы используете Java, то вы можете использовать Спящий режим OGM он обеспечивает постоянную поддержку Java для NoSQL базы данных.

Для получения более подробной информации посетите http://hibernate.org/ogm/

Пусть этот блог поможет: http://drorbr.blogspot.com/2010/02/migrating-springhibernate-application.html Здесь Дрор Березницкий прекрасно описывает, как интегрировать решение на основе sping / hibernate с mongodb.

Для полноты картины, Игровая норма также теперь поддерживает MongoDB.PlayOrm - это решение для отображения объектов на NoSQL, поэтому вы можете написать POJO и позволить ему обрабатывать все детали маршалинга / демаршалинга в MongoDB.Посетите его Документация здесь

Ну, просто чтобы привести вам пример, я делаю что-то похожее.В ColdFusion интегрирован режим Гибернации, и чтобы сохранить ваш объект Hibernate, вам нужно выполнить EntitySave(Obj).Однако то, что мы сделали, это создали объект Orm, а затем использовали компонент MongoDB Coldfusion и просто сохранили объект, выбрав mongo.Сохранить(obj,collectionName).

Я думаю, что Hibernate обеспечивает желаемую функциональность.Взгляните на это, найденное на их официальном сайте:Смешивание нескольких хранилищ данных NoSQL в одном приложении, напримериспользуйте Neo4j для вашего графика дружбы и MongoDB для ваших записей в блоге.Или смешайте NoSQL и реляционные базы данных.

ссылка

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top