Спящий с MongoDB - PullRequest
       13

Спящий с MongoDB

39 голосов
/ 28 января 2010

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

Ответы [ 10 ]

66 голосов
/ 28 января 2010

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

32 голосов
/ 12 января 2013

А как насчет Hibernate OGM ? Он предоставляет JPA для No-SQL баз данных.

22 голосов
/ 23 декабря 2011

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

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

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

Вот конкретный пример с кодом: use-spring-and-hibernate-with-mongodb

4 голосов
/ 14 марта 2013

Хорошая работа сделана раньше:

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

2 голосов
/ 10 февраля 2017

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

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

2 голосов
/ 12 сентября 2012

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

Я недавно попробовал Morphia , который использует тот же подход, но со своими собственными аннотациями. Работает нормально

1 голос
/ 16 сентября 2013

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

1 голос
/ 15 августа 2011

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

0 голосов
/ 09 мая 2019

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

ссылка

0 голосов
/ 25 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...