Гибернация с MongoDB

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


person adwk    schedule 28.01.2010    source источник
comment
пожалуйста, взгляните на Hibernate OGM. Он еще молод, но у них есть несколько интересных вещей.   -  person Shailesh Vaishampayan    schedule 02.09.2014


Ответы (10)


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

person Jared    schedule 28.01.2010
comment
пожалуйста, взгляните на Hibernate OGM. Он еще молод, но у них есть несколько интересных вещей. - person Shailesh Vaishampayan; 02.09.2014

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

person jacktrades    schedule 12.01.2013
comment
В частности, MongoDB - это один из диалектов Hibernate OGM из коробки. Ознакомьтесь с справочным руководством Узнать больше. - person Gunnar; 07.11.2014

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

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

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

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

person Israel Zalmanov    schedule 23.12.2011

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

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

person piyush shanu    schedule 10.02.2017

Ранее была проделана хорошая работа:

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

person user2164052    schedule 14.03.2013

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

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

person thomash    schedule 12.09.2012

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

person wbartussek    schedule 15.08.2011

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

person Easility    schedule 16.09.2013

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

person Faisal Abid    schedule 24.10.2010

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

справочник

person crnisamuraj    schedule 09.05.2019