Подтвердить что ты не робот

Спящий режим с MongoDB

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

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

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

Ответ 5

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

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

Ответ 6

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

Подробнее см. http://hibernate.org/ogm/

Ответ 9

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

Ответ 10

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

Ответ 11

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

ссылка