2010-03-18 1 views
15

Как я писал в заголовке, я пытаюсь изучить Spring 3.0 (я уже знаю Django, Pylons и несколько более простых фреймворков MVC) и пытаюсь использовать Cassandra в качестве бэкэнд для своего веб-приложения.Есть ли примеры/учебники по использованию Spring 3.0 с Cassandra в качестве бэкэнд?

Есть ли реальные примеры этого? Или, может быть, некоторые уроки? Я знаю о наличии документации обеих технологий, но я ищу что-то «быстрее», чтобы читать и заставлять меня кататься.

+0

Так вы изучаете Spring MVC, а не весна, которая имеет более широкий фокус –

+0

@ mirror303: извините за misconfusion, но да, я займусь свое время, чтобы узнать Spring MVC, а не весь весенний стек технологий. – zeroDivisible

+1

в будущем следите за проектом Spring Data. Они планировали поддержку cassandra и HBase. http://www.springsource.org/spring-data –

ответ

11

Я являюсь автором Hector https://github.com/rantav/hector, ведущего клиента java для cassandra, поэтому я хотел бы предложить вам посмотреть, что он может предложить.

Хотя я лично не использовал гектор с весной, мы получили несколько вкладов, которые добавили поддержку весны. См. Например, https://github.com/rantav/hector/blob/master/core/src/test/resources/cassandra-context-test-v2.xml и https://github.com/rantav/hector/blob/master/core/src/test/resources/cassandra-context-test-v2-new.xml

2

AFAIK нет «общедоступного» учебника или примера, охватывающего Spring (3.0) в сочетании с Cassandra. Так может быть, вы могли бы смотреть на это :)

Я бы рекомендовал начать смотреть на «шаблон» терминологии весной (например JDBCTemplate и HibernateTemplate) и создать что-то вроде «CassandraTemplate».

2

Если вы уже знакомы с фреймворками MVC, то вам следует знать, какая база данных/хранилища данных, которые вы используете в бэкэнд, не должна влиять на ваше приложение MVC в целом или как вы структурируете вещи - это должно влиять только на ваши данные и как он извлекает данные.

С Spring MVC принятой практикой является то, что вы представляете свою модель данных как серию «модели/классов домена», которые обычно являются POJO для хранения ваших данных. «Домен» здесь означает, что он связан с вашей проблемной областью; поэтому, если у вас есть приложение, которое касается клиентов, заказывающих то, что вы хотели бы иметь класс Customer, класс Order и т. д.

Каждый из трех уровней вашего приложения MVC - контроллеры, бизнес-логика слой, а слой DAO взаимодействует с этими классами моделей домена. Поскольку DAO слой отвечает за получение или обновления этих данных в интерфейсе, это означает, что он является DAO слоя, который должен знать, как принести свой Customer или Order класса от Кассандры, как обновить некоторые Customer полей и т.д.

Итак, нет ничего особенного в том, как вы создадите приложение Spring MVC самостоятельно при использовании Cassandra или любой другой базы данных «NoSQL». Вам просто нужно предоставить различные реализации ваших классов DAO, которые могут общаться с Cassandra.

Если вы спрашиваете, есть ли какие-либо предустановленные утилиты Spring, которые могут получить доступ к Cassandra (или Thrift), тогда ответ будет отрицательным, по крайней мере, до того, что весна 3.0. Но это должно быть довольно просто писать, как только у вас установлен набор интерфейса DAO и все остальные уровни вашего приложения.

+0

matt b, благодарю вас за такое великое объяснение вещей. Я попытаюсь посмотреть больше информации, и я надеюсь, что вы правы в том, что все станет ясно, как только у меня появятся все слои. – zeroDivisible

1

Я не думаю, что есть какая-либо библиотека кассандры-весны. Тем не менее, вы можете использовать Spring для создания и настройки компонента, который говорит с Cassandra, и вводить это в любой другой компонент, который у вас есть, для которого требуется постоянство. Таким образом, вы можете позволить ему воспользоваться Inversion Of Control и всеми возможностями, предлагаемыми Spring ApplicationContext. Таким образом вы можете отделить код, который знает о хранилище данных cassandra, от вашей бизнес-логики и использовать весну.

Итак, ваш компонент, который говорит с Кассандрой, будет иметь стереотип [@Repository][1], например. это репозиторий, как репозиторий, который говорит, например, для источника данных JDBC.

Смежные вопросы