Я ищу ресурсы, показывающие, как интегрировать MongoDB с Hibernate (желательно из spring), чтобы я мог переключаться между RDBMS и альтернативой NoSql: есть ли у кого-нибудь опыт?
Спящий режим с MongoDB
Ответ 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
Ответ 4
Есть хорошая работа, выполненная ранее:
- http://pragmaticintegrator.wordpress.com/2011/07/14/use-spring-and-hibernate-with-mongodb/
- http://pragmaticintegrator.wordpress.com/2011/07/27/unit-test-your-springhibernate-and-mongodb-setup/#comments
обратитесь к этим ссылкам. это будет полезно для вас.
Ответ 5
Существует также kundera, в котором используются JPA-аннотации для чтения/записи вашего объекта с/на mongodb. Если вы знакомы с спящим режимом, его следует использовать довольно просто.
Недавно я попробовал Morphia, который использует тот же подход, но со своими аннотациями. Он отлично работает
Ответ 6
Если вы используете Java, вы можете использовать Hibernate OGM, он обеспечивает поддержку Java Persistence для баз данных NoSQL.
Подробнее см. http://hibernate.org/ogm/
Ответ 7
Пусть этот блог поможет: http://drorbr.blogspot.com/2010/02/migrating-springhibernate-application.html Здесь Дрор Березницкий прекрасно описывает, как интегрировать решение на основе sping/hibernate с помощью mongodb.
Ответ 8
Отъезд
http://www.vizuri.com/insights/blog/2013/02/java-mongo-object-data-mappers-hibernate-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 и реляционные базы данных.